在 Python3 中,我编写了一个简单的一行代码,如下所示:
{ 2*x for x in {1,2,3,4} }
但我得到这样的答案(订单已更改)。
{8, 2, 4, 6}
为什么我得到答案{8,2,4,6}
而不是{2,4,6,8}
?
那是因为集合没有任何顺序。它们是无序的集合。
帮助set
:
构建独特元素的无序集合。
如果您希望保留订单,则可以使用list
,tuple
或collections.OrderedDict
此处。
因为一个集合没有固定的顺序。引用设置文档:
集合对象是不同的可散列对象的无序集合。
如果需要排序,请使用列表或元组,或使用OrderedDict()
对象创建保留排序的唯一键:
from collections import OrderedDict
ordered_unique_values = list(OrderedDict.fromkeys(2*x for x in (1,2,3,4)))