内容简介:我只花了半天的时间追踪一个错误到一个dict,我在迭代它时忘了排序.即使测试了那部分代码,测试也没有提到它,因为测试期间dict具有可重复的顺序.只有当我洗牌时,测试才会失败! (我使用了一个中间的random.shuffle’d列表并构建了一个OrderedDict)这有点让我感到害怕,因为整个地方可能会有类似的错误!有没有办法在测试过程中全局强制所有dicts无序?
我只花了半天的时间追踪一个错误到一个dict,我在迭代它时忘了排序.即使测试了那部分代码,测试也没有提到它,因为测试期间dict具有可重复的顺序.只有当我洗牌时,测试才会失败! (我使用了一个中间的random.shuffle’d列表并构建了一个OrderedDict)
这有点让我感到害怕,因为整个地方可能会有类似的错误!
有没有办法在测试过程中全局强制所有dicts无序?
更新:我想我至少弄明白是什么导致了这个错误.如 here 所述,具有int键的词典通常是 排序 的,但可能并非总是如此.我的假设:在我的测试中,整数总是很小(10阶),因此总是有序.然而,在实际运行中,整数更大(订单10 ^ 13),因此并不总是有序.我能够在交互式会话中重现这种行为:list(foo.keys())== sorted(foo.keys())对于小键始终为True,但对于每个具有非常大键的dict都不是.
开始.如果你希望它们以特定的方式运行,你可以创建一个继承自dict的类,并为它提供你想要的行为(例如,确保它在返回之前对键列表进行洗牌).
无论您使用的是哪个版本的python,如果您想尝试依赖于dict实现的特定行为,请务必查看实现细节.更好的是,为了便于携带,只需编写一个解决方案,确保它们按照您的预期运行,或者如上所述,或者通过在键列表上使用随机播放或其他内容.
翻译自:https://stackoverflow.com/questions/45572938/how-to-force-dicts-to-be-unordered-for-testing
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
为什么中国没出Facebook
谢文 / 凤凰出版社 / 2011-7-1 / 39.80元
《为什么中国没出Facebook》对互联网的游戏规则、市场、格局、模式及发展趋势等多方面进行了阐述,既勾画出了理想中的互联网生态及其本质,又联系中国实际,探讨了中国互联网行业的未来发展。《为什么中国没出Facebook》提出了在互联网成事应该符合的8条原则,比较了Facebook、MySpace、Twitter三种创新模式,指出了Web2.0平台时代新浪、腾讯、百度、搜狐等互联网巨头的未来方向,也......一起来看看 《为什么中国没出Facebook》 这本书的介绍吧!