Pythonには、リストと異なりそれぞれの要素をキーで紐づけることが出来るデータ構造として、辞書型という型が用意されています。
辞書型はJSONをPythonから扱うときなどをはじめ、様々な場面で使用される重要な型です。他のプログラミング言語でも使用されており『連想配列』や『マップ』と呼ばれることもあります。
今回は、Pythonで辞書型を扱う方法を実際のコードを交えて解説していきます。
Pythonの辞書型について解説
複数のデータをひとまとまりのオブジェクトとして管理する方法のひとつとして、リストがあります。しかし、Pythonには配列の他に辞書型という型が存在します。
辞書型とは
辞書型とはキーと値のペアでデータを保持するデータ構造です。
辞書型においてすべての値はキーと紐づいており、辞書のようにキーワードを索引で調べれば、そのキーワードについての解説(値)を参照できる、という構造になっています。
ほとんどのプログラミング言語で用意されているデータ構造であり、Pythonでは辞書型と呼ばれていますが、他の言語では連想配列やマップといった名前で呼ばれています。
辞書型が役立つ場面
辞書型は前述の通りキーから値を参照することが出来るため、多くのデータをプログラム上で扱うときにキー名で値の取得や設定が可能です。
キー名の存在しないただの配列では、データの数や配列の次元数が大きくなるとどれがどのデータであったかを判別することが困難であるため、キー名で値を管理できる辞書型の利用が役立ちます。
また辞書型は、JSON ( JavaScript Object Notation ) と呼ばれるJavaScriptのオブジェクトの記法で書かれる軽量のデータフォーマットを扱う場合にも使われます。
JSONはキーと値のペアで記述されるフォーマットであり、これをPythonで読み込む場合には基本的にJSONの文字列を辞書型に変換して扱います。
JSONは、複数の言語からなるシステムの言語間・システム間の通信方法としてよく利用されているため、実際のアプリ・システム開発の中ではよく目にすることがあるでしょう。
辞書型のオブジェクトを作成する
Pythonで辞書型のオブジェクトを作成するには3つの方法があります。波括弧で作成する方法、コンストラクタで作成する方法、そしてfor文との組み合わせで作成する方法です。
波括弧で辞書型のオブジェクトを作成する
波括弧で辞書型のオブジェクトを作成するには、次のように書きます。
# 波括弧での書き方:{ “キー名” : 値 }
dict1 = {"id" : 1, "name" : "yamada"}
print(dict1)
#実行結果
{'id': 1, 'name': 'yamada'}
{ “キー名” : 値 } と書くことで、辞書型のオブジェクトを作成できます。 このとき波括弧内では、コロンで区切ることで何個でもキーと値のペアを作成することが出来ます。
コンストラクタで辞書型のオブジェクトを作成する
コンストラクタとはオブジェクトを作成、初期化する関数です。 辞書型のオブジェクトをコンストラクタで作成する場合は、次のように書きます。
dict2 = dict( [ ( “id”, 2 ), ( “name”, “sato” ) ] )
print(dict2)
# 実行結果
{'id': 2, 'name': 'sato'}
for文との組み合わせで辞書型のオブジェクトを作成する
Pythonには辞書内包表記という、辞書型のオブジェクトを作成する独自の記法が存在します。
辞書内包表記は { キーを格納する変数 : 値を格納する変数 for 要素 in リスト } という形式で書くことが出来ます。
dict3 = { val : val*3 for val in [2, 4, 6, 8] }
print(dict3)
# 実行結果
{2: 6, 4: 12, 6: 18, 8: 24}
辞書内包表記を用いた辞書型のオブジェクト作成処理は、他の方法で辞書型を作成するのと比べ、処理速度が速いという特徴があります。
他の言語には存在しない記法で少々慣れが必要ですが、活用できると様々な場面で役に立つ記法です。
辞書型のオブジェクトを利用する
次に、作成したオブジェクトから値を取得したり新しく値を追加したりする方法について解説していきます。
辞書型のオブジェクトから値を取得する
辞書型から値を取得するには、次のように書きます。
dict1 = {"id" : 1, "name" : "yamada"}
print(dict1["id"])
# 実行結果
1
print(dict1["name"])
# 実行結果
yamada
このように辞書[“キー名”] で辞書オブジェクトから値を取得することが出来ます。このとき、存在しないキー名を指定するとエラーが出てしまうので注意しましょう。
辞書型のオブジェクトに値を追加する
辞書型のオブジェクトに値を追加する例として、キーに “id” と “name” を持つ辞書に “age”キーの値を追加する方法を解説します。
もともと持っていないキーを作成し、そのキーに対応する値を設定するには次のように書きます。
dict1 = {"id" : 1, "name" : "yamada"}
dict1["age"] = 22
print(dict1)
# 実行結果
{'id': 1, 'name': 'yamada', 'age': 22}
このように、辞書 [“追加したいキー名”] = 追加したいキーの値 という形式で、辞書に新しいキーと値のペアを追加することが出来ます。 同様の書き方で既に存在するキーを指定した場合は、既存のキーの値が更新されます。
まとめ
辞書型のオブジェクトを作成し、値を取得・追加する方法を解説しました。
リストと異なりそれぞれの要素をキーで紐づけることが出来る辞書型は、様々なデータをPythonのプログラム上で扱うにあたって有用な型です。
また、PythonでJSONを扱うときにも辞書型は活用されます。 辞書型は様々な場面で活用される基本的な型なのでしっかりと学習し、自由に扱えるようにしましょう。
この記事のキーワードに関する勉強会・イベントを探す
TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。