Pythoncollections.defaultdict

示例

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']})