defaultdict可以通过传入一个可执行对象,为不存在的key赋予默认值。
举例:
>>> def f():
yield 1
yield 2
yield 3
>>> it=f()
>>> test=defaultdict(lambda:next(it))
>>> test
defaultdict(<function <lambda> at 0x02C195B0>, {})
>>> test.items()
[]
>>> test['a']
1
>>> test['b']
2
>>> test['c']
3
>>> test.items()
[('a', 1), ('c', 3), ('b', 2)]
从上面的例子可以看出,访问defaultdict对象中不存在的key,会执行传入的函数,并用函数返回值赋值给key。
defaultdict的相关帮助描述如下:
| __missing__(...)
| __missing__(key) # Called by __getitem__ for missing key; pseudo-code:
| if self.default_factory is None: raise KeyError((key,))
| self[key] = value = self.default_factory()
| return value