Python - 计算列表中列表的出现次数(集合,计数器)

时间:2016-10-26 11:21:24

标签: python list collections nested counter

我导入了收藏品

import collections

我用它来计算列表中某些字符串的出现次数

counts = collections.Counter(list)
counts = counts.most_common()

这完全没问题。现在我的需求发生了变化,我有一个嵌套列表,我想计算该列表中列表的出现次数:

lists = [['word1', 'word2'], ['word4', 'word6'], ['word1', 'word2']]

我得到"列表"从单个单词列表中:

list = ['word1', 'word2', ...]

结果应如下所示

[(('word1', 'word2'), 2), (('word4', 'word6'), 1)]

我希望很清楚我想要什么。

3 个答案:

答案 0 :(得分:2)

collection.Counter()完美无缺。以下是您提到的示例:

>>> from collections import Counter
>>> my_list = [('word1', 'word2'), ('word4', 'word6'), ('word1', 'word2')]

>>> Counter(my_list)
Counter({('word1', 'word2'): 2, ('word4', 'word6'): 1})  # dict object

>>> Counter(my_list).most_common()  
[(('word1', 'word2'), 2), (('word4', 'word6'), 1)] 

答案 1 :(得分:1)

使用hashing使用dict()。这是一个简单的代码说明:

lists = [('word1', 'word2'), ('word4', 'word6'), ('word1', 'word2')]

hashmap = dict()
for item in lists:
    if item in hashmap:
        hashmap[item] += 1
    else:
        hashmap[item] = 1


new_list = []

for key, value in hashmap.iteritems():
    new_list.append(((key), value))

print new_list  # output: [(('word1', 'word2'), 2), (('word4', 'word6'), 1)]

答案 2 :(得分:0)

好的,我只是设法自己回答这个问题。
问题是它是一份清单 我需要有一个tupples列表来让Counter工作。

我在收集单词列表中的单词时设法做到了这一点:

...元组(单词[i:i + 2])