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