collections.defaultdict(default_factory)返回其子类dict具有丢失键的默认值的子类。参数应该是一个在不带参数的情况下返回默认值的函数。如果未传递任何内容,则默认为None。
>>> state_capitals = collections.defaultdict(str)
>>> state_capitals
defaultdict(<class 'str'>, {})返回对defaultdict的引用,该引用将使用default_factory方法创建一个字符串对象。
的典型用法defaultdict是使用内置的类型,如之一str,int,list或dict作为default_factory,因为当不带参数调用这些返回空类型:
>>> str() '' >>> int() 0 >>> list []
用不存在的键调用defaultdict不会产生错误,就像在普通字典中一样。
>>> state_capitals['Alaska']
''
>>> state_capitals
defaultdict(<class 'str'>, {'Alaska': ''})另一个例子int:
>>> fruit_counts = defaultdict(int)
>>> fruit_counts['apple'] += 2 # 没有错误应该发生
>>> fruit_counts
default_dict(int, {'apple': 2})
>>> fruit_counts['banana'] # 没有错误应该发生
0
>>> fruit_counts # 创建一个新密钥
default_dict(int, {'apple': 2, 'banana': 0})普通词典方法可与默认词典一起使用
>>> state_capitals['Alabama'] = 'Montgomery'
>>> state_capitals
defaultdict(<class 'str'>, {'Alabama': 'Montgomery', 'Alaska': ''})使用list作为default_factory将为每个新的密钥列表。
>>> s = [('NC', 'Raleigh'), ('VA', 'Richmond'), ('WA', 'Seattle'), ('NC', 'Asheville')]
>>> dd = collections.defaultdict(list)
>>> for k, v in s:
... dd[k].append(v)
>>> dd
defaultdict(<class 'list'>,
{'VA': ['Richmond'],
'NC': ['Raleigh', 'Asheville'],
'WA': ['Seattle']})