9

有没有办法在创建后更改 defaultdict 的 default_factory (调用不存在的键时返回的值)?

例如,当一个默认字典如

d = defaultdict(lambda:1)

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

4

1 回答 1

15

将新值分配给default_factorydefaultdict 的属性。

默认工厂

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

演示:

>>> dic = defaultdict(lambda:1)
>>> dic[5]
1
>>> dic.default_factory = lambda:2
>>> dic[100]
2
于 2013-10-06T16:38:03.893 回答