为什么 Python 3.3 中字典排序是非确定性的?
在 3.3 之前的 Python 版本中,字典键的排序是任意的,但是持续的。然而,在 Python 3.3 中,这种顺序变得不确定。
此更改是由 2012 年实施的安全修复程序导致的,并在 Python 3.3 中默认启用。哈希随机化是为了解决安全漏洞而引入的,它会导致字典和集合的迭代顺序不可预测,并且在不同的 Python 运行中会有所不同。
要禁用哈希随机化,您可以将 PYTHONHASHSEED 环境变量设置为 0。
反直觉示例
虽然问题中的反例在 Python 3.3 中并不总是产生相同的结果,但其有限数量的不同排序源于哈希冲突的处理。
Python 3.6 及更高版本中不再存在此限制,始终保留字典的插入顺序。
以上是为什么 Python 3.3 后字典排序是非确定性的?的详细内容。更多信息请关注PHP中文网其他相关文章!