2013-10-06 48 views
6

在创建defaultdict(调用不存在的密钥时返回的值)时,是否有方法更改default_factory?*在初始化后更改defaultdict *的默认返回值

例如,创建了一个defaultdict如

d = defaultdict(lambda:1) 

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

回答

10

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

default_factory

该属性用于通过__missing__()方法; 如果存在 ,则从第一个参数初始化为构造函数,如果不存在,则初始化为None

演示:

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

真棒,谢谢! –