如何计算列表中每个单词的计数? [复制]

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

以上是关于如何计算列表中每个单词的计数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何只计算字典中的单词,同时返回字典键名的计数

如何使用字典理解计算文档中每个单词的出现次数

如何计算文本文件中重复单词的频率?

如何计算 groupby 对象中包含的多个列表并将该组列表中的每个值的计数相加

如何使用python> 2.0计算文件中的单词[重复]

计算列表中所有字符串元素的多次出现? [复制]