如何计算列表中每个单词的计数? [复制]
Posted
技术标签:
【中文标题】如何计算列表中每个单词的计数? [复制]【英文标题】:How do I get a count of each of the words in my list? [duplicate] 【发布时间】:2013-10-18 16:18:35 【问题描述】:我有一个清单:
X = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
想要输出:
'cztery': 1, 'dwa': 2, 'raz': 3, 'trzy': 2
【问题讨论】:
@Brian 你能写一个答案来证明这一点吗? @tcaswell:我刚刚用groupby
写了一个答案。
【参考方案1】:
您可以使用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
类,它带有很多很棒的工具(例如most_common
和@987654324 @)。
【讨论】:
@Downvoter - 请留下您投反对票的理由。我非常关心我的工作质量。因此,如果您发现我的帖子有问题,请告诉我,以便我解决。【参考方案2】:只是用groupby
演示 Brian 建议的版本。
import itertools
data = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
print(k:len(list(v)) for k, v in itertools.groupby(sorted(data)))
【讨论】:
这是O(NLogN)
的复杂度。
这是一个演示。我没有说这是一个好的解决方案。 :-)【参考方案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
【讨论】:
Err,因为什么原因被否决了?有时要爱 SE 社区:P以上是关于如何计算列表中每个单词的计数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章