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