基本上,我有一个包含以下单词的列表
['ask', 'not', 'what', 'your', 'country', 'can', 'do', 'for', 'you', 'ask', 'what', 'you', 'can', 'do', 'for', 'your', 'country']
(这是我老师给我的例子,非常适合测试)。
我想弄清楚如何删除任何重复项并打印出没有重复项的新列表,因此输出应为
['ask', 'not', 'what', 'your', 'country', 'can', 'do', 'for', 'you']
在最初尝试使用set()之后,我设法删除了重复项,但它只是以随机顺序打印出句子,这非常麻烦。
这是我的代码:
sentence = input('Please enter a sentence. No punctuation may be included: enter code here').lower().split()
print('This is your sentence:', sentence)
no_duplicates = list(set(sentence))
print('This is your sentence without duplicates', no_duplicates)
顺便说一下,如果你没注意到,我仍然是编码的新手,所以尽量保持你的答案简单,这样我才能理解你在说什么。
答案 0 :(得分:0)
集合不是随机的,但它们是无序的。这意味着您不能在用例中使用它们,因为顺序在此任务中非常重要。
但是,使用集合有一个简单的解决方案。由于这是作业,我不会给你代码,但算法是从一个空集开始,然后遍历每个单词,检查它是否已经在集合中:如果它不是,将它添加到设置并输出到输出列表,否则跳过它。
答案 1 :(得分:0)
为什么不使用OrderedDict
>>> lst=['ask', 'not', 'what', 'your', 'country', 'can', 'do', 'for', 'you', 'ask', 'what', 'you', 'can', 'do', 'for', 'your', 'country']
>>> from collections import OrderedDict
>>> [k for k in OrderedDict((el,0) for el in lst)]
['ask', 'not', 'what', 'your', 'country', 'can', 'do', 'for', 'you']