如何检查我的列表是否有来自另一个列表(字典)的项目?

时间:2012-10-20 15:23:58

标签: python

我是使用python进行编程的初学者,我有一个问题可能很简单。

所以我有一个从.txt文件导入的单词词典,接下来我的程序会要求你输入一个句子,然后它会将你输入的每个单词保存到另一个列表中。

我必须编写一个程序来检查名为sentence_list的列表中的每个单词是否都在名为words的列表中。如果字词中没有单词,我必须将它放在另一个列表中,该列表由字典中输入错误或不输入的所有单词填充。

为了便于理解,我的程序应该是这样的:

Type your sentence:
My naeme is John, I lieve in Italy, which is beatiful country.
['naeme', 'lieve', 'beatiful']

这是我到目前为止所能做的:

words = open("dictionary.txt", encoding="latin2").read().lower().split()

sentence=input("Type your sentence: ")

import re

sentence_list = re.findall("\w+", sentence.lower())

我知道我必须为for做一些事情,但是因为它在Javascript中是不同的,因为它是Javascript,我很熟悉。

2 个答案:

答案 0 :(得分:3)

使用套件

您可以使用集合查找不在字典列表中的所有单词。

>>> set([1,2,3]).difference([2,3])
set([1])

请注意,这不包括重复项。

所以对你来说,它会是这样的(如果你需要结果作为一个列表):

misspelled_word_list = list( set(sentence_list).difference(words) )

使用

由于您需要使用for,因此这是另一种(效率较低)方法:

misspelled_word_list = []
for word in sentence_list:
    if (not word in misspelled_word_list) and (not word in words):
        misspelled_word_list.append(word)

您只需循环显示sentence_list中的字词,然后检查它们是否在您的words列表中。

答案 1 :(得分:1)

这是使用for的单行内容,会产生set错误的字词:

mispelled = { word for word in sentence if word not in dictionary }

为了清晰起见,我已重命名您的变量