Pythonでネストされた辞書(入れ子のdict)を作成する方法
Pythonの辞書(dict)オブジェクトはミュータブル(変更可能)です。この特性を利用すると、ある辞書の「値」として、別の辞書オブジェクトをそのまま格納することができます。このように、キーに対応する値としてさらに辞書が定義されている構造を、ネストされた辞書(入れ子構造の辞書)と呼びます。
ネストされた辞書の基本構文
ネストされた辞書は、外側のキーに対して、波括弧 {} で囲まれた新しい辞書を値として指定するだけで作成できます。
>>> students={"student1":{"name":"Raaj", "age":23, "subjects":["Phy", "Che", "maths"],"GPA":8.5},"student2":{"name":"Kiran", "age":21, "subjects":["Phy", "Che", "bio"],"GPA":8.25}}この例では、students という辞書の中に、student1 と student2 という2つのキーがあり、それぞれの値として生徒ごとの詳細情報(名前・年齢・科目・GPA)を保持する辞書が格納されています。
ネストされた辞書へのアクセス方法
内側の要素にアクセスするには、角括弧 [] を連続して使用し、外側のキーから順番に指定します。
>>> students["student1"]["name"] 'Raaj' >>> students["student2"]["GPA"] 8.25
get() メソッドを使った安全なアクセス
存在しないキーを指定すると KeyError が発生します。これを避けたい場合は、get() メソッドを使うと、キーが存在しない場合にデフォルト値を返すことができます。
>>> students.get("student3", {})
{}まとめ
- 辞書はミュータブルなので、値として別の辞書を格納できる
- ネストされた辞書は、キーに対して波括弧で定義した辞書を指定するだけで作成できる
- 複数階層のデータにアクセスするには、
[]を連続して使うか、get()を活用する
ネストされた辞書は、JSON形式のデータや設定ファイルなど、階層的なデータを扱う際に非常に便利な構造です。
-
Pythonでネストされた辞書を再帰的に反復処理する方法
Pythonでは、辞書(dict)の中にさらに辞書が入れ子になった「ネストされた辞書」を扱うことがあります。このような多層構造のデータをすべて走査するには、再帰的なアプローチが最も効果的です。 以下は、ネストされた辞書オブジェクトの例です。 D1={1: {2: {3: 4, 5: 6}, 3: {4: 5, 6: 7}}, 2: {3: {4: 5}, 4: {6: 7}}} 再帰関数による反復処理 各キーに対応する値が辞書そのものである場合は、同じ関数を再帰的に呼び出して、より深い階層へと処理を進めます。値が辞書でない場合は、そのキーと値を出力します。 def iterdict(d): &
-
Pythonで辞書の中に辞書を定義する方法(ネスト構造の作り方)
ネストした辞書とはPythonの辞書(dict)オブジェクトはミュータブル(変更可能)です。この特性により、ある辞書オブジェクトを別の辞書の「値」として格納することができます。つまり、キーに関連付けられた値として別の辞書を定義することで、ネストした(入れ子になった)辞書を作成できるのです。ネストした辞書の定義例以下の例では、学生ごとの情報(名前・年齢・科目・GPA)を、それぞれ独立した辞書として保持し、それらを外側の辞書の値にしています。>>> students = { student1: {name: Raaj, age: 23, subjects: [Phy, C