为什么 Python 3.3 中字典排序是非确定性的?
在 3.3 之前的 Python 版本中,字典键的排序是任意的,但是持续的。然而,在 Python 3.3 中,这种顺序变得不确定。
此更改是由 2012 年实施的安全修复程序导致的,并在 Python 3.3 中默认启用。哈希随机化是为了解决安全漏洞而引入的,它会导致字典和集合的迭代顺序不可预测,并且在不同的 Python 运行中会有所不同。
要禁用哈希随机化,您可以将 PYTHONHASHSEED 环境变量设置为 0。
反直觉示例
虽然问题中的反例并不总是产生相同的结果Python 3.3 中,其不同排序数量的限制源于对哈希冲突的处理。
此限制在 Python 3.6 及更高版本中不再存在,字典的插入顺序始终保留。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3