2013-10-06 5 views
6

Gibt es eine Möglichkeit, default_factory eines defaultdict (der Wert, der zurückgegeben wird, wenn ein nicht existierender Schlüssel aufgerufen wird) nach der Erstellung zu ändern?Standardrückgabewert eines Defaultdict * nach * Initialisierung ändern

Wenn beispielsweise ein defaultdict wie

d = defaultdict(lambda:1) 

erstellt wird, würde d 1 zurück, wenn ein nicht existierender Schlüssel wie d['absent'] genannt wird. Wie kann dieser Standardwert auf einen anderen Wert (z. B. 2) nach diese ursprüngliche Definition geändert werden?

Antwort

10

Weisen Sie den neuen Wert dem Attribut default_factory von defaultdict zu.

default_factory:

Dieses Attribut vom __missing__() Methode verwendet wird; Es wird vom ersten Argument des Konstruktors initialisiert, wenn vorhanden ist, oder None, falls nicht vorhanden.

Demo:

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

Awesome, thanks! –