有没有办法在创建defaultdict后更改default_factory(在调用不存在的键时返回的值)?
例如,当一个默认指令,如
d = defaultdict(lambda:1)
创建后,只要调用d
等不存在的密钥,d['absent']
就会返回1。 此初始定义后,如何将此默认值更改为其他值(例如,2)?
答案 0 :(得分:11)
将新值分配给defaultdict的default_factory
属性。
此属性由
__missing__()
方法使用; 它是从构造函数的第一个参数初始化的,如果 现在,或None
,如果没有。
<强>演示:强>
>>> dic = defaultdict(lambda:1)
>>> dic[5]
1
>>> dic.default_factory = lambda:2
>>> dic[100]
2