【Python】ネストされた辞書(辞書の中に辞書)の使い方

Pythonにおけるネストされた辞書(辞書の中に辞書)の使い方について詳しく解説します。

ネストされた辞書

ネストされた辞書とは、以下のように辞書の中に辞書(要素の値が辞書になっている)があるものです。

pikori_status = {
    "HP": 120,
    "MP": 45,
    "装備": {
        "武器": "鉄の剣",
        "防具": "革の盾"
    },
    "スキル": {
        "火炎斬り": "Lv2",
        "回復魔法": "Lv1"
    }
}

"装備""スキル" の値がさらに辞書になっていて、情報が階層的に整理されています。
このように、辞書の中に辞書を入れることで、階層的なデータ構造が作れます。ネストされた辞書は、以下のようにJSON形式のデータ構造とほぼ同じです。

■JSON形式

{
    "HP": 120,
    "MP": 45,
    "装備": {
        "武器": "鉄の剣",
        "防具": "革の盾"
    },
    "スキル": {
        "火炎斬り": "Lv2",
        "回復魔法": "Lv1"
    }
}

つまり、JSON形式のデータを扱うときにネストされた辞書がよく使われます。ネストされた辞書の値へアクセスするには、以下コードのように、 辞書["キー1"]["キー2"]辞書["キー1"].get("キー2")のように、階層を順番にたどります

pikori_status = {
    "HP": 120,
    "MP": 45,
    "装備": {
        "武器": "鉄の剣",
        "防具": "革の盾"
    },
    "スキル": {
        "火炎斬り": "Lv2",
        "回復魔法": "Lv1"
    }
}

# 武器の名前を取得
print("勇者ぴこりの武器:", pikori_status["装備"]["武器"])

# スキルのレベルを確認
print("勇者ぴこりの火炎斬り:", pikori_status["スキル"].get("火炎斬り", "Lv0"))
print("勇者ぴこりの回復魔法:", pikori_status.get("スキル", {}).get("回復魔法", "Lv0"))
勇者ぴこりの武器: 鉄の剣
勇者ぴこりの火炎斬り: Lv2
勇者ぴこりの回復魔法: Lv1

上記コードのように、ネストされた辞書の値を取得する際、 get() の連続使用ができますが、最初の辞書が存在しない場合、空の辞書 {} を返すようにします。これで、どのキーが欠けていてもエラーにならず、デフォルト値で処理できるため、安全なコードとなります。

関連ページ(もっと学びたい人へ)

辞書型の使い方については、以下ページで詳しく学ぶことができます。

【Python】辞書型(連想配列)の使い方を徹底解説(試験対策問題あり)
Pythonの辞書型(連想配列)の使い方について入門者向けに解説します。

Pythonの基礎から応用例まで、以下ページから学ぶことができます。

【Python超入門】基礎から応用例まで幅広く解説
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。
この記事を書いた人
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする
Python基礎

コメント