内容简介:我只花了半天的时间追踪一个错误到一个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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 基于Redis无序集合实现禁止多端登录
- 引起相变的无序结构域(IDRs)怎么预测?跟踪热点,提升文章档次!
- 激辩“AI+教育”的无序狂奔:暴露在“人脸识别”下的孩子们
- 利用 xml.dom.minidom 生成 xml,解决属性无序问题和xml声明单独一行
- golang的强制类型转换
- Lucene 段的强制合并(一)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java程序员修炼之道
[英] Benjamin J. Evans、[荷兰] Martijn Verburg / 吴海星 / 人民邮电出版社 / 2013-7 / 89.00元
本书分为四部分,第一部分全面介绍Java 7 的新特性,第二部分探讨Java 关键编程知识和技术,第三部分讨论JVM 上的新语言和多语言编程,第四部分将平台和多语言编程知识付诸实践。从介绍Java 7 的新特性入手,本书涵盖了Java 开发中最重要的技术,比如依赖注入、测试驱动的开发和持续集成,探索了JVM 上的非Java 语言,并详细讲解了多语言项目, 特别是涉及Groovy、Scala 和Cl......一起来看看 《Java程序员修炼之道》 这本书的介绍吧!