如何修复 Python 3 中字典处理的顺序?
How to fix the order of dictionary handling in Python 3?
有没有办法可靠地修复 Python 3 中字典处理的顺序,即以可预测的顺序建立键和值的迭代?
出于调试目的并重现据推测是基于 python 3.3 和 3.4 中的字典访问的故障,我需要以某种方式使字典迭代可预测。我的意思是我想修复在 Python 程序开始时执行任何迭代的方式。这样多次启动程序,调用 dict.items()
、dict.keys()
、dict.values()
总是产生相同顺序的元素。更重要的是,通过设置哈希函数的某种种子值来更改此顺序会很好。我该怎么做?
这仅用于 调试 ,我不想也不能使用 sorted(dict.keys())
或 OrderedDict
之类的东西。谢谢!
你应该看看 PYTHONHASHSEED
环境变量:
https://docs.python.org/3/using/cmdline.html#envvar-PYTHONHASHSEED
将其设置为固定整数,然后您的哈希种子是确定性的。
有没有办法可靠地修复 Python 3 中字典处理的顺序,即以可预测的顺序建立键和值的迭代?
出于调试目的并重现据推测是基于 python 3.3 和 3.4 中的字典访问的故障,我需要以某种方式使字典迭代可预测。我的意思是我想修复在 Python 程序开始时执行任何迭代的方式。这样多次启动程序,调用 dict.items()
、dict.keys()
、dict.values()
总是产生相同顺序的元素。更重要的是,通过设置哈希函数的某种种子值来更改此顺序会很好。我该怎么做?
这仅用于 调试 ,我不想也不能使用 sorted(dict.keys())
或 OrderedDict
之类的东西。谢谢!
你应该看看 PYTHONHASHSEED
环境变量:
https://docs.python.org/3/using/cmdline.html#envvar-PYTHONHASHSEED
将其设置为固定整数,然后您的哈希种子是确定性的。