假设我有一个清单:['猫狗','猫猫','狗','猫猫猫']
我希望'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个猫的实例:)
答案 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.Counter
和set
。 Counter
非常便于创建标记(也称为计数),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']