我很感激有人帮助解决这个问题:我在['word', 'another', 'word', 'and', 'yet', 'another']
表单中列出了一长串单词。我想将这些单词与我指定的列表进行比较,从而查找目标单词是否包含在第一个列表中。
我想输出哪些“搜索”字词包含在第一个列表中以及它们出现的次数。我尝试过类似list(set(a).intersection(set(b)))
的东西 - 但是它会将单词分开并比较字母。
如何在一个单词列表中写入与现有长列表进行比较?我怎样才能输出同时出现的频率?非常感谢您的时间和帮助。
答案 0 :(得分:7)
>>> lst = ['word', 'another', 'word', 'and', 'yet', 'another']
>>> search = ['word', 'and', 'but']
>>> [(w, lst.count(w)) for w in set(lst) if w in search]
[('and', 1), ('word', 2)]
此代码基本上遍历lst
的唯一元素,如果元素位于search
列表中,则会将单词以及出现次数添加到结果列表中。< / p>
答案 1 :(得分:4)
使用Counter
预先处理您的单词列表:
from collections import Counter
a = ['word', 'another', 'word', 'and', 'yet', 'another']
c = Counter(a)
# c == Counter({'word': 2, 'another': 2, 'and': 1, 'yet': 1})
现在,您可以迭代新的单词列表,并检查它们是否包含在此Counter-dictionary中,并且该值会在原始列表中显示它们的出现次数:
words = ['word', 'no', 'another']
for w in words:
print w, c.get(w, 0)
打印:
word 2
no 0
another 2
或将其输出到列表中:
[(w, c.get(w, 0)) for w in words]
# returns [('word', 2), ('no', 0), ('another', 2)]