2013-10-06 2 views
6

Есть ли способ изменить default_factory значения defaultdict (значение, которое возвращается при вызове несуществующего ключа) после его создания?Изменить значение возвращаемого значения defaultdict * после * инициализации

Например, когда defaultdict таких как

d = defaultdict(lambda:1) 

создано, d бы вернуть 1 всякий раз, когда не существует ключ, такие как d['absent'] называется. Как это значение по умолчанию было изменено на другое значение (например, 2) после это начальное определение?

ответ

10

Присвойте новому значению атрибуту default1200 значение default_factory.

default_factory:

Этот атрибут используется методом __missing__(); инициализируется от первого аргумента конструктору, если присутствует, или до None, если отсутствует.

Демо:

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

Awesome, спасибо! –