化学系エンジニアがAIを学ぶ

PyTorchでディープラーニング、強化学習を学び、主に化学工学の問題に取り組みます

メモ: 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: 'ああああ', 'い': 'ああああ'})
辞書型に次々に新しいキーのデータを追加する必要がある場合に便利と思われる。