Pythonで多次元辞書を宣言・操作する方法をわかりやすく解説
Pythonにおける多次元辞書とは
Pythonでは、辞書(dict)の値として別の辞書オブジェクトを格納することで、多次元(ネストされた)辞書を作成できます。この構造を活用すると、表形式のデータや階層的なデータを直感的かつ柔軟に扱えるようになります。
本記事では、実際のコード例をもとに、多次元辞書の宣言方法と値へのアクセス方法を順を追って解説します。
ステップ1:複数の辞書オブジェクトを宣言する
まず、生徒ごとの情報を持つ3つの辞書オブジェクトを以下のように宣言します。
>>> d1={"name":"Ravi","age":25, "marks":60}
>>> d2={"name":"Anil","age":23, "marks":75}
>>> d3={"name":"Asha", "age":20, "marks":70}各辞書には「名前(name)」「年齢(age)」「点数(marks)」という3つのキーと、それに対応する値が格納されています。
ステップ2:親辞書の値として辞書を格納する
次に、これらの辞書を親辞書の値として設定します。
>>> twodimdict={1:d1,2:d2,3:d3}
>>> twodimdict
{1: {'name': 'Ravi', 'age': 25, 'marks': 60}, 2: {'name': 'Anil', 'age': 23, 'marks': 75}, 3: {'name': 'Asha', 'age': 20, 'marks': 70}}ここでは、d1、d2、d3がそれぞれキー「1」「2」「3」に対応する値として割り当てられています。これにより、2次元的なデータ構造が完成しました。
ステップ3:ネストされた値へのアクセス
twodimdict[1]を実行すると、d1の中身全体が返されます。さらに、d1内部の特定のキーの値を取得したい場合は、次のように角括弧を連続して指定します。
>>> twodimdict[1]
{'name': 'Ravi', 'age': 25, 'marks': 60}
>>> twodimdict[1]["age"]
25このように、「外側のキー → 内側のキー」という順序でアクセスすることで、任意の深さの値を取り出せます。
注意点:辞書の要素はインデックス化されない
リストと異なり、辞書の要素はインデックス番号によって管理されていません。すべてのアクセスは必ずキーを介して行われるため、存在しないキーを指定するとKeyErrorが発生します。安全にアクセスしたい場合は、get()メソッドを使うと、キーが存在しない場合でもエラーにならずデフォルト値を返せるので便利です。
補足:辞書内包表記による簡潔な作成方法
同じ構造は、辞書内包表記を使えばより簡潔に生成できます。
>>> students = [
... {"name":"Ravi","age":25,"marks":60},
... {"name":"Anil","age":23,"marks":75},
... {"name":"Asha","age":20,"marks":70}
... ]
>>> twodimdict = {i+1: s for i, s in enumerate(students)}データ量が多い場合や動的に辞書を組み立てたい場合は、こちらの方法が有効です。
まとめ
Pythonの多次元辞書は、「辞書の値として辞書を格納する」だけで簡単に実現できます。キーを連続して指定することでネストされた値へアクセスでき、表形式データの管理に非常に役立ちます。ただし、辞書はインデックス非対応である点、存在しないキーへのアクセスには注意しましょう。
-
Pythonで変数は宣言不要?動的型付けの仕組みとtype()関数の使い方を解説
結論から言うと、Pythonでは変数を事前に宣言する必要はありません。使いたいタイミングで、いきなり値を代入して変数を使い始めることができます。 以下では、なぜ宣言が不要なのか、その背景にある仕組みを詳しく解説します。 静的型付け言語では変数の宣言が必須 C、C++、Java、C#といった静的型付け言語では、プログラム内で変数を使用する前に、その名前とデータ型を明示的に宣言しなければなりません。コンパイラがこの宣言をチェックし、変数に適切なデータが格納されていることを保証します。 例えばC言語で、整数値を格納するための変数を作りたい場合は、次のように宣言します。 int x; 宣言の後は、この
-
Pythonで文字列を辞書(dict)に変換する方法|ast.literal_evalとjson.loadsの使い分け
Pythonでは、文字列形式で表現された辞書データを実際のdictオブジェクトに変換したい場面がよくあります。主な方法としては、標準ライブラリの ast.literal_eval() を使う方法と、json モジュールを使う方法の2つがあります。それぞれの特徴と使い方を詳しく見ていきましょう。 方法1:ast.literal_eval() を使う ast.literal_eval() は、文字列をPythonの式として安全に評価する関数です。任意のコードを実行できてしまう eval() とは異なり、リテラル構造以外は評価しないため、セキュリティ面でも安心して利用できます。 評価できるのは、文