环境 Python 3:
defaultdict是collections模块下的一个类,这个类是dict的一个子类,重写了一个方法并增加了一个事件变量。在实例化的时候,第一个参数提供给default_factory的初始化函数。这个参数可以是一个类型或者函数,至于是类型这不难理解,其实类型基本上都是工厂函数。但是,有时候我们想用此方法传入一个常量,这个时候就需要自己单独设计一个常量函数或者直接使用lambda表达式。
先看如下的示范:
>>> fromcollections import defaultdict
>>> c1 =defaultdict(int)
>>>c1.get(123)
>>>c1.get('abc')
>>> defConst():
return 20
>>> c2 =defaultdict(Const)
>>>c2.get(123)
>>> c2
defaultdict(<functionConst at 0x000001D7E26F58C8>, {})
>>>c2[123]
20
>>>c2['abc']
20
>>>c1[123]
0
从上面可以看出,这种方式可以为一个字典对象不存在的key自动给出一个默认的value。用上面的这种方式自然是可以实现value为某个常量,但是使用lambda可以使得代码更为简洁:
>>> c3 =defaultdict(lambda :125)
>>>c3[12]
125
>>> c3 =defaultdict(lambda :values_you_want)
>>>c3[12]
values_you_want