2013-10-06 6 views
6

defaultdict(存在しないキーが呼び出されたときに返される値)のdefault_factoryを作成した後に変更する方法はありますか?例えば*初期化後のdefaultdict *のデフォルト戻り値の変更

よう

d = defaultdict(lambda:1) 

としてdefaultdictが作成されるときにそのようなd['absent']として存在しないキーが呼び出されるたびに、dは1を返します。この初期定義の後に、このデフォルト値を別の値(たとえば、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

素晴らしい、ありがとう! –