强制随机化的dict迭代顺序

时间:2016-02-03 20:46:07

标签: python

我有一组相当复杂的数据(关键字列表等等),它通过一组相当复杂的转换函数来达到最终结构。

在测试过程中,很少有单元测试因为其中一个列表以意外顺序返回项目而导致错误。

我认为这是因为在没有排序密钥的情况下迭代dict,但是我找不到通过代码审查发生这种情况的情况,并且尝试检查中间值很困难,因为故障只发生在我们的CI服务器上。

是否有可能指示python随机化所有dict迭代的顺序?我非常确定这样做会使本地调试变得容易(或完全排除我的预感)。

我愿意做一些hacky事情,比如搞乱dict或w / e的元类,只是为了进行本地测试。我不能轻易做到这样的事情,并且#34;用这个函数调用手动包装所有的dicts"因为我已经尝试与sorted类似,但它并没有解决问题。

2 个答案:

答案 0 :(得分:0)

如果您必须使用SharedPreferences preferences = SharedPreferencesManager.forDynaCpPrf(this); (并且无法使用dict作为@Oscar Loper的建议),请使用OrderedDict

答案 1 :(得分:0)

Python 2.7.3(以及其他)支持散列随机化(至少在2.x系列中默认关闭),可以通过env PYTHONHASHSEED=random-R CLI参数打开。

感谢@jonrsharpe指出存在这种情况。

请参阅:https://mail.python.org/pipermail/python-dev/2012-April/118676.html