Python の入れ子構造の辞書
1. ネストした辞書 (Nested Dictionaries)
辞書(Dictionary)の中に辞書を含めることができます。これは「ネスト(入れ子)された辞書」と呼ばれます。
1.1 階層構造を持つ辞書の作成
3つの辞書を内包する、1つの大きな辞書を作成する例です。
# 3つの子辞書を持つ親辞書の定義
myfamily = {
"child1" : {
"name" : "エミル",
"year" : 2004
},
"child2" : {
"name" : "トビアス",
"year" : 2007
},
"child3" : {
"name" : "ライナス",
"year" : 2011
}
}
print(myfamily)2. 既存の辞書を統合してネストさせる
あらかじめ作成された複数の辞書を、新しい一つの辞書にまとめることも可能です。
2.1 複数の辞書オブジェクトのネスト
3つの独立した辞書を作成し、それらを「myfamily」という辞書に格納する例です。
# 個別の辞書を定義
child1 = {
"name" : "エミル",
"year" : 2004
}
child2 = {
"name" : "トビアス",
"year" : 2007
}
child3 = {
"name" : "ライナス",
"year" : 2011
}
# 上記の辞書を一つの親辞書にまとめる
myfamily = {
"child1" : child1,
"child2" : child2,
"child3" : child3
}
print(myfamily)3. ネストした辞書内のアイテムへのアクセス
ネストされた辞書内の特定の項目にアクセスするには、外側の辞書から順にキー(Key)の名前を指定します。
3.1 階層を辿った要素の取得
child2 の "name" にアクセスする例です。
myfamily = {
"child1" : {
"name" : "エミル",
"year" : 2004
},
"child2" : {
"name" : "トビアス",
"year" : 2007
},
"child3" : {
"name" : "ライナス",
"year" : 2011
}
}
# child2 の name キーの値を出力
print(myfamily["child2"]["name"])4. ネストした辞書のループ処理
items() メソッドを使用することで、辞書の中をループして、キーと値(この場合は内側の辞書)を同時に取得できます。
4.1 ネスト構造のイテレーション
親辞書をループして、各子辞書のキーと、その中にある詳細情報を出力する例です。
myfamily = {
"child1" : {
"name" : "エミル",
"year" : 2004
},
"child2" : {
"name" : "トビアス",
"year" : 2007
},
"child3" : {
"name" : "ライナス",
"year" : 2011
}
}
# 辞書の名前(child1, child2 等)と、中身の辞書をループで取得
for x, obj in myfamily.items():
print(x) # 子辞書のキー名を表示
for y in obj:
print(y + ':', obj[y]) # 子辞書内のキーとバリューを表示