2013-10-06 19 views
6

Czy istnieje sposób na zmianę właściwości default_factory wartości defaultdict (wartość zwracana po wywołaniu nieistniejącego klucza) po jej utworzeniu?Zmiana domyślnej wartości zwracanej defaultdict * po * inicjalizacji

Na przykład, gdy defaultdict takich jak

d = defaultdict(lambda:1) 

jest tworzony, d wróci 1 ilekroć nieistniejący klucz takie jak d['absent'] nazywa. W jaki sposób ta domyślna wartość została zmieniona na inną wartość (np. 2) po tej początkowej definicji?

Odpowiedz

10

Przypisz nową wartość do default_factory atrybutu defaultdict.

default_factory:

Cecha ta jest stosowana metodą __missing__(); jest inicjalizowany od pierwszego argumentu do konstruktora, jeśli występuje , lub do None, jeśli jest nieobecny.

Demo:

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

Awesome, dzięki! –