Python defaultdict()ってなんだ??

codewarsにて、defaultdict()を使っての解法があり、知らなかったのでここに記す。

defaultdict()の使い方

公式ドキュメントでは、下記記載があり。

  • ファクトリ関数を呼び出して存在しない値を供給する辞書のサブクラス

  ※ファクトリ関数って、キーが見つからない場合に、初期値を提供する関数とのこと。

>>> from collections import defaultdict
>>>
>>> dd = defaultdict(int)
>>> dd[2] # <---未登録のkey:2でも例外とならず、0が表示される。
0
>>> int() # <---defaultdict()の引数で指定した"int()"は0を返すから、さっきは0が初期値となった。
0
>>> 

なるほど。

下のように、valueの型を指定(というか制限)するのにも良いのかも。

>>> dd = defaultdict(str)
>>> dd[2]
''
>>> dd[2] += 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> 

使いどころいっぱいありそうなので、ちょっと覚えておこうか。