比较python中两个列表中的单词

时间:2013-03-14 10:30:06

标签: python list compare words

我很感激有人帮助解决这个问题:我在['word', 'another', 'word', 'and', 'yet', 'another']表单中列出了一长串单词。我想将这些单词与我指定的列表进行比较,从而查找目标单词是否包含在第一个列表中。

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

如何在一个单词列表中写入与现有长列表进行比较?我怎样才能输出同时出现的频率?非常感谢您的时间和帮助。

2 个答案:

答案 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)]