使用set删除重复项

时间:2015-03-06 09:16:29

标签: python set

基本上,我希望通过从lst in到set的迭代并将其打印回列表来执行此操作。我得到的问题是我不能遍历set.add(item)。 set.add()在循环外应用一个值时非常好,但是我无法在循环中使用它。

使用此功能,我可以删除重复项。

remove_duplicates(numbers):
    lst = []
    for i in numbers:
        if i not in lst:
            lst.append(i)
    return lst

但是,我希望能够做到这样的事情。

这是我能走多远。

lst = { }
lsto = [1, 1, 1, 2, 3, 4, 1, 2, 5, 7, 5]

for item in lsto:
    lst.add(item)

print(lst)

提前致谢!

2 个答案:

答案 0 :(得分:5)

我认为你的意思是,

>>> lsto = [1, 1, 1, 2, 3, 4, 1, 2, 5, 7, 5]
>>> list(set(lsto))
[1, 2, 3, 4, 5, 7]

set(lsto)将可迭代lsto转换为集合,然后移除重复元素。再次将设置转到列表将为您提供最终的列表。

答案 1 :(得分:1)

要匹配第一个逻辑并保持顺序,您可以使用OrderedDict

from collections import OrderedDict
lsto = [1, 1, 1, 2, 3, 4, 1, 2, 5, 7, 5]

print(OrderedDict().fromkeys(lsto).keys())
[1, 2, 3, 4, 5, 7]

偶然设置为您提供相同的订单,但设置为无序集合,因此您不能依赖获取任何订单。

相关问题