Python 中 defaultdict()
是 collections
模块提供的一种字典的子类,它重写了一个方法来设定每个未定义的键的默认值,默认值可以是 Python 中任何的数据类型。下面我们将详细讲解 defaultdict()
对字典进行初始化的用法介绍。
1. defaultdict() 的创建
默认情况下,创建一个 defaultdict()
与创建一个普通的字典非常相似。你需要调用 defaultdict()
的构造函数,并指定默认值的类型。下面是一个例子:
from collections import defaultdict
dict1 = defaultdict(int)
dict2 = defaultdict(list)
在以上示例中,我们可以看到,我们分别创建了两个 defaultdict()
。第一个字典的默认值类型为整数 (int
),第二个字典的默认值类型为列表 (list
)。
2. defaultdict() 的使用
一旦创建了 defaultdict()
,你就可以使用类似于普通字典的方式,添加或修改键值对。当你定义一个键不存在的字典项时,defaultdict()
将会使用你定义的默认值创建这个新项目。
在下面的示例中,我们将使用 defaultdict()
对一个列表进行初始化。假如我们想要将一个单词列表按照首字母分组,这个时候我们很容易想到使用字典,但是我们需要在字典中为每个字母的键值做初始化处理。这个时候,defaultdict()
就成了非常好的选择。下面是代码示例:
from collections import defaultdict
words = ['apple', 'banana', 'cherry', 'date', 'elderberry']
# 使用 defaultdict() 对每个首字母做初始化,并将相应的单词加入到对应的列表中
words_dict = defaultdict(list)
for word in words:
words_dict[word[0]].append(word)
# 打印输出结果
for k, v in words_dict.items():
print(k, ':', v)
执行以上代码,我们可以得到结果:
a : ['apple']
b : ['banana']
c : ['cherry']
d : ['date']
e : ['elderberry']
在上面的示例中,当我们执行 words_dict[word[0]].append(word)
时,如果 words_dict
中不存在 word[0]
这个键,defaultdict()
会使用 list()
构造一个空列表,并将其作为默认值存储在字典中。这样,无论该键是否存在,我们都可以使用 append()
函数来向字典中添加新的值,达到对字典进行初始化的目的。
总结
defaultdict()
可以用于在字典上自动初始化缺失的值,在某些情况下可以方便地进行编码并减少了很多不必要的工作。但是,使用 defaultdict()
会增加一些额外的开销,因此,如果你仅仅需要一个简单的字典实现,可能会更适合使用普通的 dict
。