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