如何计算列表中每个单词的计数?

时间:2013-10-10 18:40:40

标签: python list

我有一个清单:

 X = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']

并希望输出:

{'cztery': 1, 'dwa': 2, 'raz': 3, 'trzy': 2}

3 个答案:

答案 0 :(得分:4)

您可以使用dictionary comprehension

>>> lst = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
>>> {x:lst.count(x) for x in set(lst)}
{'raz': 3, 'cztery': 1, 'dwa': 2, 'trzy': 2}
>>>

或者,您可以使用collections.Counter

>>> from collections import Counter
>>> Counter(lst)
Counter({'raz': 3, 'dwa': 2, 'trzy': 2, 'cztery': 1})
>>>

第二个解决方案可能就是你想要的,因为它与理解相同,效率更高,并且还使用了Counter类,它带有很多很棒的工具(例如{{3} }和most_common)。

答案 1 :(得分:1)

使用stdlib的另一种方法:

In [6]: from collections import Counter
In [7]: l = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
In [8]: dict(Counter(l).items())
Out[8]: {'cztery': 1, 'dwa': 2, 'raz': 3, 'trzy': 2}

答案 2 :(得分:0)

只是展示Brian建议的groupby版本。

import itertools
data = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
print({k:len(list(v)) for k, v in itertools.groupby(sorted(data))})