defaultdictはPythonの標準ライブラリに含まれる辞書クラスのサブクラスで、存在しないキーにアクセスされた場合にデフォルト値を返すことができます。これはdict.get()メソッドを使用することに比べて、非常に便利な場合があります。
例えば、次のような辞書があるとします。
my_dict = {'apple': 1, 'banana': 2, 'cherry': 3}
この辞書に存在しないキーにアクセスすると、KeyErrorが発生します。
>>> my_dict['orange']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'orange'
defaultdictを使用すると、存在しないキーにアクセスした場合にデフォルト値を返すことができます。例えば、整数をデフォルト値とするdefaultdictを作成するには、次のようにします。
from collections import defaultdict
my_default_dict = defaultdict(int)
このdefaultdictに存在しないキーにアクセスすると、0が返されます。
>>> my_default_dict['orange']
0
defaultdictは、他のデータ型に対しても同じように動作します。例えば、次のように文字列をデフォルト値とするdefaultdictを作成することができます。
my_string_dict = defaultdict(str)
このdefaultdictに存在しないキーにアクセスすると、空の文字列が返されます。
>>> my_string_dict['orange']
''
defaultdictは、特定のキーに対するデフォルト値を設定することもできます。例えば、次のように、存在しないキーにアクセスすると'N/A'が返されるdefaultdictを作成することができます。
my_na_dict = defaultdict(lambda: 'N/A')
このdefaultdictに存在しないキーにアクセスすると、'N/A'が返されます。
>>> my_na_dict['orange']
'N/A'
defaultdictは、キーにアクセスするだけでなく、新しいキーと値のペアを追加することもできます。
>>> my_default_dict['apple'] += 1
>>> my_default_dict
defaultdict(<class 'int'>, {'apple': 2})
このように、defaultdictは、辞書の操作をより便利に行うための便利なツールです。