Python中defaultdict用法实例详解
什么是defaultdict
defaultdict
是dict
的一个子类,它重载了一个方法并添加了一个可写的实例变量。这个实例变量被称为default_factory
。它指定了在初始化字典时如果使用不存在的key时,该key所对应的默认值的类型。
defaultdict的语法
defaultdict
的构造函数和dict
的构造函数完全一样,都可以传入一个序列类型的参数,它可以是一个列表(List)、元组(tuple)、字典(dict)等等,具体可查看官方文档。语法如下:
defaultdict([default_factory[, ...]])
defaultdict的用法
实例1:计算单词的出现次数
下面的代码示例演示了如何使用defaultdict
计算单词的出现次数:
from collections import defaultdict
text = "this is a sample text with several words in it and more words"
words = text.split()
word_count = defaultdict(int)
for word in words:
word_count[word] += 1
print(word_count)
代码输出:
defaultdict(<class 'int'>, {'this': 1, 'is': 1, 'a': 1, 'sample': 1, 'text': 1, 'with': 1, 'several': 1, 'words': 2, 'in': 1, 'it': 1, 'and': 1, 'more': 1})
这个示例代码中,我们先将文本分词成单词,并将每个单词之间的空格划分为分隔符。接下来,我们定义一个名为word_count
的字典,并使用int
作为默认工厂,以便将任何不存在的key映射到默认的值0。然后我们迭代所有的单词,并在word_count
字典中:对于每个单词,如果它已经在字典中存在,则将该单词的值加1;否则,该单词的值被映射到默认的值0,并加1。
实例2:将相同值的key组成一个列表
下面的代码示例演示了如何使用defaultdict
将相同值的key组成一个列表:
from collections import defaultdict
data = [("blue", 1), ("green", 2), ("blue", 3), ("green", 4), ("red", 1)]
grouped_data = defaultdict(list)
for key, value in data:
grouped_data[key].append(value)
print(grouped_data)
代码输出:
defaultdict(<class 'list'>, {'blue': [1, 3], 'green': [2, 4], 'red': [1]})
这个示例代码中,我们定义一个名为grouped_data
的字典,并使用list
作为默认工厂,以便将任何不存在的key映射到空列表。然后我们迭代所有的(key, value)元组,并在grouped_data
字典中:对于每个key,我们将新的value添加到key所对应的列表中。
总结
defaultdict
的作用是避免在使用dict
过程中由于引用不存在的key而引发KeyError
异常。通常情况下,我们需要自己为不存在的key设置一个值,在没有defaultdict
时,我们需要通过if ... else ...
语句来进行判断,而defaultdict
避免了重复代码的出现,让编程变得更加方便和简单。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中defaultdict用法实例详解 - Python技术站