Python向字典和默认字典添加元素

-6 投票
2 回答
4218 浏览
提问于 2025-04-18 18:42

这里有一个普通的字典:

ordinarydict = {}
ordinarydict['somekey']
print ordinarydict

如果我用一个不存在的键去访问它,就会出现错误。这个错误叫做 KeyError "somekey",这是正常现象。

接下来是 defaultdict:

from collections import defaultdict
d = defaultdict(int)
d['somekey']
print d

>>> defaultdict(<type 'int'>, {'somekey': 0})

我没有在字典里添加任何东西,只是用一个无效的键去调用字典。但是现在,defaultdict 自动添加了一个新元素。

2 个回答

0

因为 defaultdict 默认会自动把缺失的键添加到字典中,这一点可以在源代码中看到。

这种行为在文档中也有说明:

如果 default_factory 不是 None,它会在没有参数的情况下被调用,以提供给定键的默认值,这个值会被插入到字典中,并返回。

1

这就是defaultdict的主要用途:你可以用一个可调用的东西(在这里是int)来创建它。当你访问一个不存在的键时,它会自动调用这个可调用的东西(产生0),然后把这个键插入到字典里。也就是说,当你访问一个键时,如果它还没有,就会自动创建这个键。

撰写回答