2013-10-06 13 views
6

Oluşturulduktan sonra bir varsayılan ifadenin (var olmayan bir anahtarın çağrıldığında döndürülen değer) varsayılan öğesinin değiştirilmesi için bir yol var mı?Varsayılan olarak varsayılan değer döndürme değerini değiştir * * sonradan başlatma

Örneğin

, örneğin

d = defaultdict(lambda:1) 

gibi bir defaultdict oluşturulduğunda varolmayan bir anahtar gibi d['absent'] olarak adlandırılan her, d 1 dönüş olur. Bu ilk değer, bu ilk tanımdan sonra başka bir değere (ör. 2) nasıl dönüştürülebilir?

cevap

10

Yeni değeri varsayılan olarak default_factory özniteliğine atayın.

default_factory:

Bu özellik, __missing__() yöntem ile kullanılır; , eğer varsa veya None varsa, ilk argümandan yapıcıya başlatılır.

Demo:

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

Müthiş, teşekkürler! –