所
defaultdict需要的只是一个可调用对象,该对象将返回不带参数调用时应用作默认值的对象。
如果要调用
int构造函数,它将返回
0,如果要调用
lambda:0,它将返回
0。与列表相同。唯一的区别是,构造函数将始终使用其逻辑来创建对象。一个lambda,如果您选择这样做,则可以添加其他逻辑。
例如,
# alternating between `0` and `[]`from itertools import countfactory = lambda c=count(): 0 if next(c) % 2 else []superdict = defaultdict(factory)


![python defaultdict:0 vs. int和[] vs list python defaultdict:0 vs. int和[] vs list](http://www.mshxw.com/aiimages/31/596545.png)
