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

时间:2013-10-06 16:35:46

标签: python collections defaultdict

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

例如,当一个默认指令,如

d = defaultdict(lambda:1)

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

1 个答案:

答案 0 :(得分:11)

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

default_factory

  

此属性由__missing__()方法使用;   它是从构造函数的第一个参数初始化的,如果   现在,或None,如果没有。

<强>演示:

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