Python作业-比较列表
可能重复:Python作业-比较列表,python,list,Python,List,可能重复: 这实际上是一个分数的家庭作业 程序的使用者必须把句子写下来。Than程序检查单词并打印错误的单词(如果错误单词出现多次,程序必须只打印一次)。错误的单词必须按它们在句子中出现的顺序打印出来 我是这样做的。但有一个问题。错误的单词在句子中出现的顺序不一样,这是因为内置的功能。是否有其他方法删除列表中的重复项 字典是从dictionary.txt导入的 sentence=input("Sentence:") dictionary=open("dictionary.txt", encod
这实际上是一个分数的家庭作业 程序的使用者必须把句子写下来。Than程序检查单词并打印错误的单词(如果错误单词出现多次,程序必须只打印一次)。错误的单词必须按它们在句子中出现的顺序打印出来 我是这样做的。但有一个问题。错误的单词在句子中出现的顺序不一样,这是因为内置的功能。是否有其他方法删除列表中的重复项 字典是从dictionary.txt导入的
sentence=input("Sentence:")
dictionary=open("dictionary.txt", encoding="latin2").read().lower().split()
import re
words=re.findall("\w+",sentence.lower())
words=sorted(set(words))
sez=[]
for i in words:
if i not in dictionary:
sez.append(i)
print(sez)
要删除列表中的重复项,请将其添加到词典中。字典只有一个键:值对
words = filter(lambda index, item: words.index(item) == index, enumerate(words))
它将过滤掉每一份副本,并维持订单
正如托马斯指出的,这是一个相当沉重的方法。如果需要处理更多的单词,可以使用以下for循环:
dups = set()
filtered_list = []
for word in words:
if not word in dups:
filtered_list.append(word)
dups.add(word)
你可以用
@编辑:顺便说一句,如果字典很大,那么最好将字典列表转换为一个集合——检查集合中某个元素的存在性需要恒定的时间,而不是在列表中使用O(n)。您应该检查以下答案:
如果您使用他的方法并停止对
单词
数组排序(删除单词=已排序(设置(单词))
行),它应该做您期望的事情。besede定义在哪里?因为它不是for循环,为什么不“for word in words:”我刚刚编辑了它。现在应该可以了。+说到删除重复项,你已经有了这个问题的答案。为什么还要问?这不是python字典,而是从字典中导入的。txt@user1762790我说的是python中的字典。@user1762790帮个忙,发布你的dictionary.txt,让我们看看。@PrototypeStark字典是一个空格分隔的单词列表,也是一个O(n^2)算法,所以不要在少数输入词上使用这个。谢谢,我添加了一个更有效的for循环。