创建了一个 defaultdict 后,是否有方法可以更改其 default_factory(在调用不存在的键时返回的值)?
例如,当像下面这样的 defaultdict 被创建后:
d = defaultdict(lambda:1)
当创建一个字典时,如果调用一个不存在的键,例如d ['absent']
,那么d
将返回1。如何在这个初始定义之后将这个默认值更改为另一个值(例如2)?
创建了一个 defaultdict 后,是否有方法可以更改其 default_factory(在调用不存在的键时返回的值)?
例如,当像下面这样的 defaultdict 被创建后:
d = defaultdict(lambda:1)
当创建一个字典时,如果调用一个不存在的键,例如d ['absent']
,那么d
将返回1。如何在这个初始定义之后将这个默认值更改为另一个值(例如2)?
将新值分配给defaultdict的default_factory属性。
这个属性由__missing__()方法使用;如果存在,它将从构造函数的第一个参数初始化,否则为None。
示例:
>>> dic = defaultdict(lambda:1)
>>> dic[5]
1
>>> dic.default_factory = lambda:2
>>> dic[100]
2
defaultdict.default_factory
,其行为可能会出现意外情况。>>> dic = defaultdict(lambda:1)
>>> dic[5]
1
>>> dic.default_factory = lambda:2
>>> dic[5]
1
dic[5]
时,如果字典中不存在该键,则会将其添加到字典中并赋予默认值。而且修改 dic.default_factory
之后也不会改变 5
的值。