This question already has answers here:
Why is dictionary ordering non-deterministic?

(2 个回答)


5年前关闭。




我是出于好奇而问这个问题的(特别是深入了解 Python 是如何在幕后工作的)。

我完全知道 python dict 对象是无序的——你可以放入一堆项目,并打印出 dict 的一些表示,并且表示中项目的顺序与项目的顺序没有对应关系进入。

然而,我很好奇的是,为什么从一次代码执行到下一次执行的顺序会发生变化?

我有一个非常简单的 python 脚本,它正在将 dict 打印到控制台。 dict 看起来像这样(内容非常不相关):
{
    'hello': 'hi',
    'goodbye': 'bye',
    'hahaha': 'lol',
}

将它打印到控制台会导致项目不仅以随机顺序打印,而且在每次运行程序 时以不同的顺序打印 。这是我的问题:为什么会这样?

注意:python 代码在 django 项目中(但在这种情况下我没有使用任何 django 功能 - 只是提到这一点,以防它在某种程度上相关)。

最佳答案

这里有一个注释:https://docs.python.org/3/reference/datamodel.html#object.__hash__

这是注意事项:



在 3.3 版更改: 默认情况下启用哈希随机化。

关于python - 为什么 Python 3.3+ dict 的排序不仅未定义,而且是可变的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34209598/

10-12 16:43
查看更多