Python collections.defaultdict模块用法详解
概述
Python中的collections模块提供了一种名为defaultdict的数据类型,它是一个子类(dict class)。
这意味着defaultdict类继承了dict类中所有的方法,而且还有自己的实现。在使用defaultdict时,如果字典中的键不存在,它可以自动创建一个默认值,这样就很容易构建一种简单的计数器,只需要一个单行代码。
以下是collections.defaultdict()的函数原型:
class collections.defaultdict([default_factory[, ...]])
其中defaultdict()函数接受一个可调用对象作为其唯一参数。当字典查找不存在的键时,它将调用提供的可调用对象以获取默认值并将其存储。如果没有指定默认工厂,则键不存在时返回None。
用法
示例1:使用defaultdict作为计数器
下面的示例演示了如何使用defaultdict作为计数器,它记录了给定列表中的单词出现次数。
from collections import defaultdict
word_counts = defaultdict(int)
words = ["apple", "banana", "apple", "pear", "banana", "orange"]
for word in words:
word_counts[word] += 1
print(word_counts)
输出结果为:
defaultdict(<class 'int'>, {'apple': 2, 'banana': 2, 'pear': 1, 'orange': 1})
如上所示,在没有显式创建键的情况下,即使字典不包含该键,也可以对它进行加法操作。在这种情况下,default_factory(int函数)被调用来生成默认值0并将其分配给新的键。
示例2:使用defaultdict创建多级字典
下面的示例演示了如何使用defaultdict创建多级字典。默认情况下,使用字典嵌套列表的情况下,如果在第一层中访问字典中不存在的键,则会出现KeyError。
from collections import defaultdict
dd = defaultdict(lambda: defaultdict(int))
dd[0][0] = 1
print(dd[0][0])
print(dd[0][1])
输出结果为:
1
0
如上所示,当我们发现选定了不存在的键时,default_factory将为该键提供默认值。上面的代码为第一层添加了一些默认字典(value=defaultdict(int)),因此无论哪个键都会返回第二层中默认值int()。
总结
defaultdict为我们带来了方便,省去了处理字典键不存在时出现的KeyError异常的麻烦。基于此,我们可以快速方便地处理一些常见的情况,如计数和创建多级字典等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python collections.defaultdict模块用法详解 - Python技术站