yiskw note

機械学習やプログラミングについて気まぐれで書きます

pythonのdefaultdictで定数をデフォルト値に指定する方法


pythonの標準ライブラリであるcollectionで定義されたdefaultdictで,デフォルト値に定数を指定する方法について調べたのでメモしておきます.

ダメな例

defaultdictの引数に直接定数を定義してみます.
すると,defaultdictの引数は呼び出し可能(callable)じゃないとダメと怒られてしまいます.

>>> from collections import defaultdict
>>> d = defaultdict(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: first argument must be callable or None

解決法

関数を指定しなければならないのなら,定数を返す関数を引数に与えてしまえば問題ありません.
関数を定義するほどではないので,ラムダ式で記述した関数を指定しています.

>>> from collections import defaultdict
>>> d = defaultdict(lambda: 1)
>>> d["hoge"]
1

参考

python - defaultdict with default value 1? - Stack Overflow