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

sam*_*sam 6 python collections defaultdict

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

例如,当一个defaultdict如

d = defaultdict(lambda:1)
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*ary 12

将新值分配给default_factorydefaultdict 的属性.

default_factory:

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

演示:

>>> dic = defaultdict(lambda:1)
>>> dic[5]
1
>>> dic.default_factory = lambda:2
>>> dic[100]
2
Run Code Online (Sandbox Code Playgroud)