我试图通过使用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()方法将给定数据结构中的元素转换为集合时如何对其进行排序?
答案 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)