在Python3中打印set continer时,它不按顺序打印

在Python3中打印set continer时,它不按顺序打印,python,python-3.x,set,Python,Python 3.x,Set,我只是想学习python中的set容器。 因此,我使用以下方法创建了一个法线集: dset = set(['a','c','z','d']) 但当我打印它时,结果是: {'c', 'a', 'z', 'd'} 难道不是: {'a', 'c', 'z', 'd'} 有人能解释为什么输出是这样的吗?set数据类型是否有默认的排序机制? 还是我的数学能力差?集合不是有序的,它们不是有序的容器,所以你无能为力 如果您有一个列表,并且希望使用set,则按顺序将其转换回列表: print(sorted

我只是想学习python中的set容器。 因此,我使用以下方法创建了一个法线集:

dset = set(['a','c','z','d'])
但当我打印它时,结果是:

{'c', 'a', 'z', 'd'}
难道不是:

{'a', 'c', 'z', 'd'}
有人能解释为什么输出是这样的吗?set数据类型是否有默认的排序机制?
还是我的数学能力差?

集合不是有序的,它们不是有序的容器,所以你无能为力

如果您有一个列表,并且希望使用set,则按顺序将其转换回列表:

print(sorted(set(l),key=l.index)) 
所以没有机会制作有序集

顺便说一句,有一个有序的集合 从文档()中:

集合对象是不同的散列对象的无序集合


集合不是已订购的容器。如果你想要顺序,你必须使用列表或元组。如果你反复运行它,可能会得到相同的输出,但这个输出不是你可以指望得到的。我想这是你想要的。pypi@exabytes.js中有一个模块-由于它们的主要用途,不需要有订单,它有助于提高性能。看@Sayse是的,这很有帮助。非常感谢。