当我运行此简单程序时:
example: {'left', 'right', 'up', 'down'}
new_dict = dict(enumerate(example))
print(new_dict)
每次运行都会得到不同的(索引,值)对。例如:
MacBook-Air:Desktop mymac$ python3 example.py
{0: 'right', 1: 'down', 2: 'left', 3: 'up'}
MacBook-Air:Desktop mymac$ python3 example.py
{0: 'left', 1: 'up', 2: 'down', 3: 'right'}
MacBook-Air:Desktop mymac$ python3 example.py
{0: 'down', 1: 'left', 2: 'right', 3: 'up'}
那是为什么?
答案 0 :(得分:1)
来自文档https://docs.python.org/3/reference/datamodel.html#object.hash
注意默认情况下,
CancellablePromise
,__hash__()
和str
对象的bytes
值会以不可预测的随机值“成盐”。尽管它们在单个Python进程中保持不变,但在重复调用Python之间是不可预测的。更改哈希值会影响字典,集合和其他映射的迭代顺序。
版本3.3中已更改:默认情况下,哈希随机化处于启用状态。