[英]Change default return value of a defaultdict *after* initialization
有沒有辦法在創建后更改 defaultdict 的 default_factory (調用不存在的鍵時返回的值)?
例如,當一個默認字典如
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
這是因為當 require dic[5]
時,錯過的鍵被添加到具有當前默認值的字典中。 並且之后修改dic.default_factory
不會改變5
的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.