Pythonの辞書型(連想配列)の使い方とソースコードについて紹介します。
辞書型(dictionary)とは
本ページの内容は以下動画で解説しています。
Pythonの辞書型(dictionary)とは、リストやタプルのように複数の要素が格納されたデータ型です。
リストやタプルとの違いは、以下のようにキーを指定して値にアクセスすることです。
data = {"key1":1, "key2":2} print(data["key2"]) # 1
一方、リストやタプルでは、要素の指定を「数字(要素番号)」で行いますが、辞書型では要素の指定を任意の文字列や数値で行います。
辞書型はまさしく「辞書のようにキーワードを索引で調べると、キーワードについての解説(値)を参照できる」というような仕組みになっています。
Pythonでは辞書型と呼ばれていますが、他のプログラミング言語では同様の仕組みが連想配列やマップと呼ばれています。
辞書型はJSON形式のデータフォーマットを扱う場合にも使われます。JSONは辞書型と同じようなデータ構造(キーと値のペア)であるため、JSON形式のデータは辞書型としてPython内で用いる一般的です。JSON形式のデータは、WebAPIなどシステム間のデータ通信などによく利用されるため、Pythonで本格的にシステム開発をする場合には辞書型について理解しておく必要があります。
辞書型の利点
リストやタプルの場合、データ(値)の数が大きくなるとどれがどのデータであったかが判別困難になります。
辞書型は1つのデータ(値)をキー名で管理できるため、データ数が増えても判別できるという利点があります。
辞書型のデータを生成
辞書型では、キーに文字列を設定できます。
辞書型は中括弧 { } で要素を括ります。
【書式】
dict = {キー1 : 値1, キー2 : 値2, …}
キーには「文字列」「数値」「タプル」を設定できます。
以下は、キーに文字列を設定した例です。
data = {"fubuki":1, "shirayuki":2} print(data["fubuki"]) # 1
以下は、キーに数値を設定した例です。
data = {3:1, "shirayuki":2} print(data[3]) # 1
キーに指定できないものは、値を書き換えできる変数や配列(リスト)です。
以下のように、タプルは値を書き換えできないため、指定できます。
data = {"('fubuki', 'bukki')":1, "shirayuki":2} print(data["('fubuki', 'bukki')"]) # 1
要素数(長さ)を取得
Pythonのタプルでは、リスト(配列)と同様、len関数で要素数(長さ)を取得できます。
※キーと値の1セットで1要素としてカウントされます
【書式】
len(辞書名)
■サンプルコード
data = {"fubuki'":1, "shirayuki":2} print(len(data)) # 2
辞書型のデータを連結・追加
Pythonの辞書では、updateメソッドで辞書同士を連結(データ更新)できます。
【書式】
辞書名1.update(辞書名2)
※辞書名1の後ろに辞書名2が追加されます。
■サンプルコード
data = {"fubuki":1, "shirayuki":2} data2 = {"hatsuyuki":3, "miyuki":4} data.update(data2) print(data) # {'fubuki': 1, 'shirayuki': 2, 'hatsuyuki': 3, 'miyuki': 4}
Pythonの辞書では、「存在しない新しいキーと値」を辞書に代入すると、要素として追加されます。
書式
辞書名[新しいキー名] = 値
※辞書の最後尾に追加されます。
■サンプルコード
data = {"fubuki":1, "shirayuki":2} data["hatsuyuki"] = 3 print(data) # {'fubuki': 1, 'shirayuki': 2, 'hatsuyuki': 3}
辞書型のデータ代入(値の書き換え)
Pythonの辞書では、以下のように代入すると辞書の値を書き換えできます。
【書式】
辞書名[キー] = 新しい値
■サンプルコード
data = {"fubuki":1, "shirayuki":2} data["fubuki"] = 5 print(data["fubuki"]) # 5
辞書型のデータ削除(del文、popメソッド、clearメソッド)
Pythonの辞書では、del文、もしくはpopメソッドを用いて指定したキーをもつ要素のみを削除できます。
書式
del 辞書名[キー] 辞書名.pop(キー)
※popメソッドの場合は、返り値で消去した要素の値を取得できます。
■del文のサンプルコード
data = {"fubuki":1, "shirayuki":2} del data["fubuki"] print(data) # {'shirayuki': 2}
■popメソッドのサンプルコード
data = {"fubuki":1, "shirayuki":2} del_value = data.pop("fubuki") print(del_value) # 1 print(data) # {'shirayuki': 2}
■clearメソッドのサンプルコード
Pythonの辞書では、clearメソッドを用いて全ての要素を削除できます。
data = {"fubuki":1, "shirayuki":2} data.clear() print(data) # {}
【書式】
辞書名.clear(キー)
辞書型のキーの存在確認(in演算子)
Pythonの辞書では、in演算子を用いて指定したキーが存在するか確認できます。
【書式】
キー in 辞書名
■返り値
キーが辞書に存在する・・・True
キーが辞書に存在しない・・・False
■サンプルコード
data = {"fubuki":1, "shirayuki":2} print("fubuki" in data) # True print("kaga" in data) # False
辞書型の全てのキーと値を取得
Pythonの辞書では、keysメソッドを用いて全てのキーを取り出せます。
同様に、valuesメソッドで全ての値を取り出せます。
【書式①】
辞書名.keys()
※返り値:全てのキー(リスト型)
【書式②】
辞書名.values()
※返り値:全ての値(リスト型)
■サンプルコード
data = {"fubuki":1, "shirayuki":2} print(data.keys()) # dict_keys(['shirayuki', 'fubuki']) print(data.values()) # dict_values([1, 2])
辞書型のデータをタプルやリストに変換
Pythonの辞書では、itemsメソッドで要素をタプルやリストに変換して取り出せます。
【書式】
辞書名.items()
※返り値:各要素をタプル(キー, 値)に変換し、各タプルをリストに格納したもの
■サンプルコード
data = {"fubuki":1, "shirayuki":2} print(data.items()) # ([('shirayuki', 2), ('fubuki', 1)])
関連ページ
Pythonの使い方について以下ページでまとめています。