这是 defaultdict 的工作原理:
from collections import defaultdict
a=defaultdict(lambda:3)
a[200]==3 #True
为什么它defaultdict
被设计为采用没有参数的函数,而不仅仅是一个常量值?
这是替代定义。
class dd(dict):
def __init__(self,x):
self._default=x
def __getitem__(self,key):
if key in self: return dict.__getitem__(self, key)
else:
self[key]=self._default
return self[key]
以便
a=dd(3)
a[200]==3 #True