初始化后更改defaultdict的默认返回值

12

创建了一个 defaultdict 后,是否有方法可以更改其 default_factory(在调用不存在的键时返回的值)?

例如,当像下面这样的 defaultdict 被创建后:

d = defaultdict(lambda:1)

当创建一个字典时,如果调用一个不存在的键,例如d ['absent'],那么d将返回1。如何在这个初始定义之后将这个默认值更改为另一个值(例如2)?

2个回答

16

将新值分配给defaultdict的default_factory属性。

default_factory

这个属性由__missing__()方法使用;如果存在,它将从构造函数的第一个参数初始化,否则为None。

示例:

>>> dic = defaultdict(lambda:1)
>>> dic[5]
1
>>> dic.default_factory = lambda:2
>>> dic[100]
2

2
请注意 defaultdict.default_factory,其行为可能会出现意外情况。
>>> dic = defaultdict(lambda:1)
>>> dic[5]
1
>>> dic.default_factory = lambda:2
>>> dic[5]
1

这是因为当使用 dic[5] 时,如果字典中不存在该键,则会将其添加到字典中并赋予默认值。而且修改 dic.default_factory 之后也不会改变 5 的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接