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

比较python中两个列表中的单词,python,list,compare,words,Python,List,Compare,Words,我希望有人能在这个可能很简单的问题上给予我帮助:我有一个很长的单词列表,格式是['word','other','word','and','yet','other']。我想将这些单词与我指定的列表进行比较,从而查找目标单词,无论它们是否包含在第一个列表中 我想输出我的哪些“搜索”词包含在第一个列表中,以及它们出现的次数。我尝试了类似于list(set(a).intersection(set(b))的方法,但它将单词拆分并比较字母 我如何写一个单词列表来与现有的长列表进行比较?如何输出共现及其频率?

我希望有人能在这个可能很简单的问题上给予我帮助:我有一个很长的单词列表,格式是
['word','other','word','and','yet','other']
。我想将这些单词与我指定的列表进行比较,从而查找目标单词,无论它们是否包含在第一个列表中

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


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

使用
计数器对您的单词列表进行预处理

from collections import Counter
a = ['word', 'another', 'word', 'and', 'yet', 'another']
c = Counter(a)
# c == Counter({'word': 2, 'another': 2, 'and': 1, 'yet': 1})
现在,您可以迭代新的单词列表,并检查它们是否包含在此计数器字典中,该值给出了它们在原始列表中的出现次数:

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

此代码基本上遍历
lst
的唯一元素,如果该元素在
搜索列表中,它会将单词以及出现次数添加到结果列表中。

您可以发布一些您尝试过的代码吗
set(['word',other'])
计算结果为
set(['word',other'])
并且不会将单词拆分为字母。非常感谢。这两种解决方案似乎都很好,但我的代码允许在sys.argv(2)中键入Stock时输入排序[('S')、('t')、('o')、('c')、('k')]。在执行程序时,我如何能够在可比较的列表中输入更多的单词?与您建议的两种解决方案相比,它比较的是字母,而不是整个单词conll=open(sys.argv[1],'r')targetword=str(sys.argv[2])vocab=[]c=计数器(vocab)在targetword中为w打印c:print w,c.get(w,0)print[(w,vocab.count(w)),如果在targetword中为w]打印目标词
>>> 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)]