天天看点

collections.defaultdict类的使用

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

继续阅读