defaultdict
の基本的な使い方
Python
のdefaultdict
は、collections
モジュールからインポートされる特別な辞書です。通常の辞書とは異なり、キーが存在しない場合にKeyError
を発生させず、あらかじめ定義された初期値を返す機能を持ちます。
from collections import defaultdict
# 整数の初期値を持つdefaultdict
d = defaultdict(int)
d['a'] += 1 # 初期値0が設定され、結果として1が代入される
defaultdict
の利便性
通常のdict
では、存在しないキーを参照するとKeyError
が発生しますが、defaultdict
はこれを回避します。以下の例では、リストを初期値として設定することで、各キーに対して複数の値を簡単に追加できます。
d = defaultdict(list)
d['colors'].append('red') # 'colors'キーがない場合でも、空リストが初期値として作成される
defaultdict
の応用例
defaultdict
は、リストやカウンタ、セットなどを初期値として使う場面に適しており、複雑なデータ処理や集計をシンプルにすることができます。
s = [('apple', 1), ('banana', 2), ('apple', 3)]
d = defaultdict(list)
for k, v in s:
d[k].append(v)
# 結果: {'apple': [1, 3], 'banana': [2]}
通常のdict
との違い
defaultdict
と通常のdict
の最大の違いは、キーが存在しない場合の挙動です。通常の辞書ではキーがないときにエラーを発生させますが、defaultdict
は指定した初期値を自動的にセットします。
d = {}
# d['key'] # KeyErrorが発生する
dd = defaultdict(int)
print(dd['key']) # 0が出力される
まとめ
defaultdict
は、辞書に対して動的に初期値を設定する必要がある場合に非常に便利です。通常の辞書と比較して、コードがより簡潔でエラーハンドリングも軽減されるため、複雑な集計やリスト操作が必要な場面で有用です。場面に応じて、通常の辞書とdefaultdict
を使い分けると良いでしょう。