今天第一次碰到defaultdict这个名词,不懂它的意思,看了几篇博文,大概明白了,写一下自己的理解。
先来一段代码(Python 2.7.12)
>>> from collections import defaultdict
>>> d1 = dict()
>>> d2 = defaultdict(list)
>>> d1['a']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
>>> d2['a']
[]
defaultdict解决了使用dict时的一个问题:
如果使用dict[key]取得字典中的key对应values时,key不存在,会报错KeyError。
python中defaultdict的用法详解 - 脚本之家:defaultdict在dict的基础上添加了一个missing(key)方法, 在调用一个不存的key的时候, defaultdict会调用__missing__
, 返回一个根据default_factory参数的默认值, 所以不会返回Keyerror.
参考文献:
1. 关于defaultdict的一篇简短的解读,见python中defaultdict的用法详解 - 脚本之家;
2. 讲解了defaultdict的由来,解决了什么问题,见理解 Python 语言中的 defaultdict;
3. 关于defaultdict的完整内容,见defaultdict - Python官方文档;