2

我会感谢有人在这个可能很简单的问题上提供帮助:我有一长串表格中的单词['word', 'another', 'word', 'and', 'yet', 'another']。我想将这些单词与我指定的列表进行比较,从而查找目标单词是否包含在第一个列表中。

我想输出我的哪些“搜索”词包含在第一个列表中以及它们出现的次数。我尝试了类似的东西list(set(a).intersection(set(b)))- 但它拆分了单词并比较了字母。

我如何写一个单词列表以与现有的长列表进行比较?以及如何输出共现及其频率?非常感谢您的时间和帮助。

4

2 回答 2

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列表中,它会将单词连同出现次数一起添加到结果列表中。

于 2013-03-14T10:33:54.907 回答
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)]
于 2013-03-14T10:32:03.800 回答