如何强制dicts无序(用于测试)?

栏目: 编程工具 · 发布时间: 7年前

内容简介:我只花了半天的时间追踪一个错误到一个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都不是.

从3.6, dicts maintain key insertion order

开始.如果你希望它们以特定的方式运行,你可以创建一个继承自dict的类,并为它提供你想要的行为(例如,确保它在返回之前对键列表进行洗牌).

无论您使用的是哪个版本的python,如果您想尝试依赖于dict实现的特定行为,请务必查看实现细节.更好的是,为了便于携带,只需编写一个解决方案,确保它们按照您的预期运行,或者如上所述,或者通过在键列表上使用随机播放或其他内容.

翻译自:https://stackoverflow.com/questions/45572938/how-to-force-dicts-to-be-unordered-for-testing


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Google 广告优化与工具

Google 广告优化与工具

宫鑫 / 电子工业出版社 / 2010-7 / 60.00元

《Google 广告优化与工具》全面地阐述了Google AdWords这个高效广告投放平台的各方面内容,包括Google广告的渠道组成、质量得分、关键词和广告语策略、后期跟踪机制以及各种辅助工具的使用等。引导读者一步步建立一个强大的Google搜索引擎营销投放策略。本书案例丰富、知识面广且层次清晰,适用于各个层次的搜索引擎营销优化人员,不论是电商企业的领导人、工作在账户优化第一线的具体操作者、营......一起来看看 《Google 广告优化与工具》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

html转js在线工具
html转js在线工具

html转js在线工具