计算列表中每个项目的单词出现次数

时间:2014-03-03 23:23:58

标签: python list dictionary

假设我有一个清单:['猫狗','猫猫','狗','猫猫猫']

我希望'cat'的计数为3(列表中每个项目唯一,而不是6)。

我目前正在使用:

counts = [cat dog, cat cat, dog, cat cat cat]
for sentence in sequence_of_sentences:
    counts.update(word for word in sentence.split())

更新:应该是3个猫的实例:)

2 个答案:

答案 0 :(得分:2)

我不明白你是怎么得到4的。您的示例列表

>>>l=['cat dog', 'cat cat', 'dog', 'cat cat cat']

3个唯一'cat'个。第一,第二和最后一个元素。如果您需要,请使用

>>>sum(1 for i in l if 'cat' in i)

或@holden极好地暗示(这对我来说从未发生过)

>>>sum(('cat' in i) for i in l)

读得很好。

答案 1 :(得分:0)

结帐collections.CountersetCounter非常便于创建标记(也称为计数),set非常适合从序列中删除重复项。

from collections import Counter

phrases = ['cat dog', 'cat cat', 'dog', 'cat cat cat']    
all_counts = Counter()
occurrence_counts = Counter()

for phrase in phrases:
    words = phrase.split()
    distinct_words = set(words)
    all_counts.update(words)
    occurrence_counts.update(distinct_words)

all_counts['cat']        # 6
occurrence_counts['cat'] # 3

update()根据您传递的内容更新结果。

通过从命令行运行python来稍微使用set,你应该知道上面发生了什么:

$ python
>>> animals = [ 'bird', 'bird', 'cat' ]
>>> set(animals)
set(['bird', 'cat'])
>>> list(set(animals))
['bird', 'cat']