2013-10-06 69 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

真棒,謝謝! –