普通字典 在 key 不存在时,会触发异常;
而 defaultdict 在 初始化容器 时,会让 调用者 提前 指定 默认值,所以,在 key 不存在 时,会 实例化 一个值,作为 默认值,不会 触发异常。
>>> d = dict()
>>> d
{}
>>> d['a']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
>>> from collections import defaultdict
>>> dd = defaultdict(list)
>>> dd
defaultdict(<type 'list'>, {})
>>> dd['a']
[]
>>> dd
defaultdict(<type 'list'>, {'a': []})
>>> dd['b'].append('qwer')
>>> dd['b']
['qwer']
>>> dd
defaultdict(<type 'list'>, {'a': [], 'b': ['qwer']})