相关疑难解决方法(0)

无序Python集的"顺序"

我知道Python中的集合是无序的,但我对它们显示的"顺序"感到好奇,因为它似乎是一致的.它们似乎每次都以相同的方式乱序:

>>> set_1 = set([5, 2, 7, 2, 1, 88])
>>> set_2 = set([5, 2, 7, 2, 1, 88])
>>> set_1
set([88, 1, 2, 5, 7])
>>> set_2
set([88, 1, 2, 5, 7])
Run Code Online (Sandbox Code Playgroud)

......和另一个例子:

>>> set_3 = set('abracadabra')
>>> set_4 = set('abracadabra')
>>> set_3
set(['a', 'r', 'b', 'c', 'd'])
>>>> set_4
set(['a', 'r', 'b', 'c', 'd'])
Run Code Online (Sandbox Code Playgroud)

我只是好奇为什么会这样.有帮助吗?

python python-internals

47
推荐指数
2
解决办法
9436
查看次数

为什么一组数字似乎被排序?

多次运行此代码

t = {'a', 'b', 'c', 'd'}
print(t)
Run Code Online (Sandbox Code Playgroud)

可以打印像:

{'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
Run Code Online (Sandbox Code Playgroud)

(如果您使用控制台进行复制,请确保在Rerun每次重新粘贴代码并执行之前单击.如果仍然无法复制,可能您的散列随机化不等于random.在Python 3.3及更高版本上,默认情况下启用哈希随机化.)


另一方面,下面的代码总是打印相同的集合,它实际上是排序的:

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}
Run Code Online (Sandbox Code Playgroud)

问题: …

python set python-3.4

5
推荐指数
1
解决办法
166
查看次数

标签 统计

python ×2

python-3.4 ×1

python-internals ×1

set ×1