【发布时间】:2019-02-24 13:14:59
【问题描述】:
多次运行此代码
t = {'a', 'b', 'c', 'd'}
print(t)
可以打印类似:
{'c', 'b', 'a', 'd'}
{'d', 'b', 'c', 'a'} # different
{'d', 'b', 'c', 'a'} # same
{'a', 'd', 'b', 'c'} # different
{'a', 'b', 'c', 'd'} # different
# etc
(如果您使用控制台复制它,请确保在每次重新粘贴代码并执行它之前单击重新运行。如果仍然无法复制,也许您有hash randomization 不等于 random.On Python 3.3 and greater, hash randomization is turned on by default.)
另一方面,下面的代码总是打印相同的集合,并且实际上是排序的:
s = {1, 6, 3.3, 4}
print(s)
# prints:
# {1, 3.3, 4, 6}
# {1, 3.3, 4, 6}
# {1, 3.3, 4, 6}
# {1, 3.3, 4, 6}
问题:
为什么数字集似乎总是被排序并且它们真的是总是排序的?
【问题讨论】:
-
请注意,
set基本上只是一个没有值的dict。 -
它似乎只在 iPython 控制台中排序,而不是在普通的 python 控制台中,在迭代它或调用
str(s)或repr(s)时。
标签: python set python-3.4