【Python3】辞書(ディクショナリ)
辞書(dict)
辞書を扱うには、下記のように{…}で定義します。
キーと値のペアのリストを保持します。
d = {'Yamada': 30, 'Suzuki': 40, 'Tanaka': 80}
d1 = d['Yamada']
d2 = d['Suzuki']
d3 = d['Tanaka']
存在しないキーを指定して値を取得しようとすると「KeyError」が発生します。
辞書では、各要素の値が参照するオブジェクトを変更することができます。
辞書のサイズ
辞書が現在持っている要素数(キーの数)を「len」関数で取得することができます。
dict = {"yamada":75, "endou":82}
print(len(dict)) # 2
要素の追加と連結
辞書に要素を追加するには、現在存在しないキーを指定して値を代入します。
また、辞書に他の辞書の要素を連結させることもできます。
「update」メソッドを使います。
要素の削除
辞書の中の任意の要素を削除することができます。
要素を削除するには「del」文を使用します。
「del」文は引数に指定したオブジェクトを削除するための文です。
dict = {"yamada":75, "endou":82}
del dict["endou"]
・キーを指定して要素を削除する
「pop」メソッドを実行すると指定したキーに該当する要素を削除し値を返します。
辞書.pop(キー[, オブジェクト])
1 番目の引数に削除したい要素のキーを指定します。
キーが辞書に含まれていれば要素を削除し、要素の値を返します。
2 番目の引数が指定されていた場合、
指定したキーが辞書に含まれていない場合に 2 番目に指定したオブジェクトを返します。
具体的には次のように記述します。
dict = {"yamada":75, "endou":82}
val = dict.pop("endou")
・任意の要素を削除する
「popitem」メソッドを実行すると、
辞書オブジェクトの中のいずれかの要素を削除し、キーと値を要素とするタプルとして返します。
辞書.popitem()
この時削除される要素はランダムに決まります。
取得できるタプルは「(キー, 値)」の形式となります。
具体的には次のように記述します。
dict = {"yamada":75, "endou":82}
whille dict:
tuple = dict.popitem()
・全てのの要素を削除する
「clear」メソッドを実行すると、全ての要素を削除します。
辞書.clear()
dict = {"yamada":75, "endou":82}
dict.clear()
print(dict) # {}
この時辞書オブジェクトが削除されるのではなく、空の辞書オブジェクトになります。
キーの確認
「in」演算子を使うと辞書オブジェクトに指定のキーが含まれているかどうかを確認できます。
書式は次の通りです。
キー in 辞書オブジェクト
「in」演算子の左辺に指定したキーが右辺の辞書の要素の中に存在している場合は、
「True」を返します。存在しない場合は「False」を返します。
また、「not in」演算子を使うと指定のキーが含まれていない場合に「True」を返します。
キー not in 辞書オブジェクト
具体的には次のように記述します。
dict = {"yamada":75, "endou":82}
print("yamada" in dict) # True
print("katou" in dict) # False
・has_key メソッド
「in」演算子と同じ動作をする「has_key」メソッドもあります。
辞書オブジェクト.has_key(キー)
引数に指定したキーが存在した場合には「True」を返し、存在しなかった場合には「False」を返します。
具体的には次のように記述します。
dict = {"yamada":75, "endou":82}
print(dict.has_key("kudou")) # False
print(dict.has_key("endou")) # True
キーと値のリストを取得
キーのリストを取得するには辞書型で用意されている「keys」メソッドを使います。
辞書オブジェクト.keys()
辞書オブジェクトに含まれる全てのキーを要素としたリスト型のオブジェクトを返します。
dict = {"yamada":75, "endou":82}
aaa = dict.keys()
print(aaa) # ["yamada", "endou"]
値のリストを取得するには辞書型で用意されている「values」メソッドを使います。
辞書オブジェクト.values()
辞書オブジェクトに含まれる全ての値を要素としたリスト型のオブジェクトを返します。
dict = {"yamada":75, "endou":82}
aaa = dict.values()
print(aaa) # [75, 82]
辞書オブジェクトに含まれる各要素について(キー, 値)のタプル型のオブジェクトを作成し、
そのリストを取得するには辞書型で用意されている「items」メソッドを使います。
辞書オブジェクト.items()
dict = {"yamada":75, "endou":82}
list = dict.values()
print(list) # [("yamada", 7), ("endou", 82)]