Python でのネストされた辞書

Manav Narula 2023年10月10日
Python でのネストされた辞書

Python のネストされた辞書とは、外側の辞書の値も辞書になっている辞書内の辞書のことです。次のコードは、基本的な例を示しています。

d1 = {
    0: {"Dept": "Mathematics", "Prof": "Dr Jack"},
    1: {"Dept": "Physics", "Prof": "Dr Mark"},
}
print(d1)

出力:

{0: {'Dept': 'Mathematics', 'Prof': 'Dr Jack'}, 1: {'Dept': 'Physics', 'Prof': 'Dr Mark'}}

以下の例で示されているように、入れ子になった辞書のキーを使って、辞書の要素に簡単にアクセスすることができます。

d1 = {
    0: {"Dept": "Mathematics", "Prof": "Dr Jack"},
    1: {"Dept": "Physics", "Prof": "Dr Mark"},
}
print(d1[0]["Dept"])

出力:

Mathematics

ここで、0 は外部辞書のキーであり、'Dept' は内部辞書のキーです。

通常の Python 辞書のように要素を追加することもできます。さらに、辞書全体を要素として追加することもできます。例えば、

d1 = {
    0: {"Dept": "Mathematics", "Prof": "Dr Jack"},
    1: {"Dept": "Physics", "Prof": "Dr Mark"},
}
d1[2] = {"Dept": "CS", "Prof": "Dr Jay"}
print(d1[2])

出力:

{'Dept': 'CS', 'Prof': 'Dr Jay'}

Python は collections モジュールに defaultdict() コンストラクタを用意しており、利用できないキーにアクセスされたときに辞書を作成してデフォルト値を返すようになっています。

defaultdict() データ型は、デフォルト値を返したり、必要に応じて辞書を初期化したりしたい場合に非常に便利です。以下のコードは、このメソッドを用いて単純な辞書を作成する方法を示しています。

from collections import defaultdict

d1 = defaultdict(lambda: defaultdict(dict))
d1["key_outer_1"] = {"key_inner_1": "val1"}
d1["key_outer_2"] = {"key_inner_2": "val2"}
print(dict(d1))

出力:

{'key_outer_1': {'key_inner_1': 'val1'}, 'key_outer_2': {'key_inner_2': 'val2'}}
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python Dictionary