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