メモ: Python defaultdict の使い方
辞書型は存在しないキーを参照しようとするとエラーになるが、
>>> d = {} >>> d['a'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'a'
defaultdictは存在しないキーを参照すると、自動的にそのキーのデータを生成する
>>> import collections >>> dd = collections.defaultdict(int) >>> dd['a'] 0 >>> dd defaultdict(<class 'int'>, {'a': 0})
自動的に生成されるデータ値はdefaultdict()の()内の関数で初期化される。上の場合はint()が実行される(int()はint型の0が返る)。例えば次のようにすると'ああああ'で初期化される。
>>> func = lambda: 'ああああ' >>> dd = collections.defaultdict(func) >>> dd[0] 'ああああ' >>> dd['い'] 'ああああ' >>> dd defaultdict(<function <lambda> at 0x7fbb199c5dc0>, {0: 'ああああ', 'い': 'ああああ'})辞書型に次々に新しいキーのデータを追加する必要がある場合に便利と思われる。