1

在 Python3 中,我编写了一个简单的一行代码,如下所示:

{ 2*x  for x in {1,2,3,4} } 

但我得到这样的答案(订单已更改)。

{8, 2, 4, 6}

为什么我得到答案{8,2,4,6}而不是{2,4,6,8}

4

2 回答 2

8

那是因为集合没有任何顺序。它们是无序的集合。

帮助set

构建独特元素的无序集合。

如果您希望保留订单,则可以使用list,tuplecollections.OrderedDict此处。

于 2013-07-03T11:05:13.747 回答
5

因为一个集合没有固定的顺序。引用设置文档

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

如果需要排序,请使用列表或元组,或使用OrderedDict()对象创建保留排序的唯一键:

from collections import OrderedDict

ordered_unique_values = list(OrderedDict.fromkeys(2*x for x in (1,2,3,4)))
于 2013-07-03T11:05:33.030 回答