pythonのdefaultdict()について
defaultdict()をsklearnの実装で見かけて、調べたのでメモ。
サンプルコード
from collections import defaultdict dict = defaultdict() dict.default_factory = dict.__len__ dict["a"] dict["b"] dict["c"] print(dict["a"], dict["b"], dict["c"]) # 出力 0 1 2
解説
default_factory
を設定することで、dictにkeyのみで(valueを渡さずに)追加しようとした場合の挙動を変更できる。
上記のコードでは、dict.default_factory = dict.__len__
としているので、keyを追加しようとしたときのdictのlenがvalueとして設定される。
公式の使い方の例では、key-valueのペアのシーケンスをlistに変更して、keyに対してlistが設定できるように変更する例が示されている。これはたまに使いそうなデータ構造なのでやり方を覚えておきたい。