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

2024-05-15 11:53:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份清单:

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

想要输出:

^{pr2}$

Tags: dwapr2razczterytrzy
3条回答

另一种使用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}

您可以使用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}
>>>

或者,您可以使用^{}

^{pr2}$

第二个解决方案可能是您想要的,因为它做的事情与理解相同,效率更高,并且还使用了Counter类,该类附带了很多很棒的工具(例如^{}^{})。在

只是用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))})

相关问题 更多 >