https://www.python.org/download/releases/2.2/descrintro/
class defaultdict(dict): # 继承内置的dict
def __init__(self, default=None): # 覆盖了父类的__init__方法
dict.__init__(self) # 必须手动初始化父类
self.default = default # 设置初始化的默认值
def __getitem__(self, key): # __getitem___ 就是dict["key"]
try:
return dict.__getitem__(self, key)
except KeyError: # 如果key找不到则返回默认值
return self.default
当然也可以这样写,但是效率明显比不上上面的写法
def __getitem__(self, key):
if key in self:
return dict.__getitem__(self, key)
else:
return self.default
重写get()
确保,get
方法也会返回默认值:
def get(self, key, *args):
if not args:
args = (self.default,)
return dict.get(self, key, *args)
增加merge
方法,来融合两个字典的key
def merge(self, other):
for key in other:
if key not in self:
self[key] = other[key]