簡體   English   中英

更改默認字典的默認返回值 *after* 初始化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM