This question already has answers here:
Why is dictionary ordering non-deterministic?
(2 个回答)
5年前关闭。
我是出于好奇而问这个问题的(特别是深入了解 Python 是如何在幕后工作的)。
我完全知道 python
然而,我很好奇的是,为什么从一次代码执行到下一次执行的顺序会发生变化?
我有一个非常简单的 python 脚本,它正在将
将它打印到控制台会导致项目不仅以随机顺序打印,而且在每次运行程序 时以不同的顺序打印 。这是我的问题:为什么会这样?
注意:python 代码在 django 项目中(但在这种情况下我没有使用任何 django 功能 - 只是提到这一点,以防它在某种程度上相关)。
(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/