defaultdict

標準のディクショナリは、ある値を取り出すときにその値が存在しなかったらデフォルト値を設定する setdefault() メソッドを提供します。それと比較して defaultdict はそのコンテナが初期化されるときに呼び出し側に前もってデフォルト値を指定させます。

import collections

def default_factory():
    return 'default value'

d = collections.defaultdict(default_factory, foo='bar')
print 'd:', d
print 'foo =>', d['foo']
print 'bar =>', d['bar']

これは同じデフォルト値を持つように全てのキーに適用するのであればうまく動作します。それはデフォルト値が集約か累積の数値に使用される型、例えば list, set または int であっても、そういった場合に特に便利です。標準ライブラリのドキュメントにこの方法で defaultdict を使用するサンプルがあります。

$ python collections_defaultdict.py
d: defaultdict(<function default_factory at 0x100467c80>, {'foo': 'bar'})
foo => bar
bar => default value

See also

defaultdict examples
標準ライブラリドキュメントの defaultdict を使用するサンプル
James Tauber: Evolution of Default Dictionaries in Python
defaultdict がディクショナリの初期化にどう関連するかの別の視点による説明
Bookmark and Share