标题说明了一切:
有什么理由使用 dict 而不是defaultdict吗?
我能想到的唯一原因是“我真的不需要它”。但后来我可以问是否有任何理由为什么 dict 没有被 defaultdict 取代。
可能的原因可能是:
- 性能损失
- 测试
但我不认为性能损失如此糟糕,因为您只需检查是否已经存在一个新值,该值在 O(1) 中摊销。
我也想不出测试可能会变得更加困难的例子。(但我不是很有经验)
标题说明了一切:
有什么理由使用 dict 而不是defaultdict吗?
我能想到的唯一原因是“我真的不需要它”。但后来我可以问是否有任何理由为什么 dict 没有被 defaultdict 取代。
可能的原因可能是:
但我不认为性能损失如此糟糕,因为您只需检查是否已经存在一个新值,该值在 O(1) 中摊销。
我也想不出测试可能会变得更加困难的例子。(但我不是很有经验)
不使用 a 的很多理由defaultdict
:
defaultdict
填充一个专门的用例,您希望在缺少键时为您自动创建值,并且可以使用工厂函数生成这些值,而无需访问插入的键。
请注意,异常不仅仅用于标记程序员错误。异常是 Python 语言中一个非常强大的部分,它的用途远不止编码错误。如果您的数据通常不需要新密钥,那么使用异常处理(请求宽恕)比每次都测试密钥(请求许可)更快。
请参阅Progammers 上的Python Forgiveness vs. Permission 和 Duck Typing over 进行比较。