Python 速習チュートリアル

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]) # 子辞書内のキーとバリューを表示