set()如何从列表中删除重复项

时间:2019-07-29 22:06:03

标签: python python-3.x list set

我试图通过使用set()将其转换为set来从Python 3中的列表中删除重复项。但是,我尝试在过程结束时实现一定的顺序。转换列表后,我注意到结果集不符合我的预期顺序。

data = [3, 6, 3, 4, 4, 3]
my_set = set(data)
print(my_set)

结果集为:(3,4,6)

我希望set()可以从0到n遍历给定列表,并保留遇到的每个整数的第一个实例。但是,结果集似乎以不同的方式排序。

在python文档中,或者在堆栈溢出时,我找不到任何与此相关的信息。是否知道set()方法将给定数据结构中的元素转换为集合时如何对其进行排序?

2 个答案:

答案 0 :(得分:2)

在Python中,集合根本不存在顺序的概念,这就是为什么您不能期望元素以任何特定顺序显示的原因。 Here是创建没有重复的列表的示例,该列表的顺序与原始列表的顺序相同。

data = [3, 6, 3, 4, 4, 3]
without_duplicates = list(dict.fromkeys(data))
>>> without_duplicates
[3, 6, 4]

答案 1 :(得分:1)

set对象在Python中不是按键或插入顺序排序的...但是,您可以通过显式构建所需的结果来获得所需的内容:

res = []
seen = set()
for x in data:
    if x not in seen:
        seen.add(x)
        res.append(x)
print(res)
相关问题