Python

Python基礎講座(7 ディクショナリ)

More than 3 years have passed since last update.

ディクショナリ

辞書型(ディクショナリ)は、キーバリューストアでデータを保存します。
キーバリューストアについて知らない人は、郵便番号を連想してみてください。
郵便番号は、典型的なキーバリューでデータを格納したシステムです。
キー:107-0052 バリュー:東京都港区赤坂
キー:160-0021 バリュー:東京都新宿区歌舞伎町
他にも、学校の学籍番号と生徒名の関係もキーバリューと言えるでしょう。
Pythonではディクショナリを
d = {'key1' : 'Value1', 'key2' : 'Value2'}
のように定義します。

以下のプログラムをコピーして、実行してください。それぞれの機能を説明します。

dictionary_explain.py
d = {'key1' : 'Value1', 'key2' : 'Value2'}

print("len(d) {0}".format(len(d)))
print("min(d) {0}".format(min(d)))
print("max(d) {0}".format(max(d)))

dic_d_key1 = 'key1' in d
dic_d_key3 = 'key3' in d
print("dic_d_key1 {0}".format(dic_d_key1))
print("dic_d_key3 {0}".format(dic_d_key3))

print("d[key1 {0}".format(d['key1']))
print("d[key1 {0}".format(d.get('key1')))
print("d[key1 {0}".format(d.get('key3')))
print("d[key1 {0}".format(d.get('key3','No Existance')))
d['key1'] = 'NewValue1'
d['key3'] = 'Value3'
del d['key2']
print("d {0}".format(d))
print(d.pop('key3'))
print("d {0}".format(d))

ディクショナリ内の要素の存在確認

キー in ディクショナリ でディクショナリ内に要素が存在するかを確認できます。

len(ディクショナリ)、max(ディクショナリ)、min(ディクショナリ)

len(ディクショナリ)と記述することで、ディクショナリ内のデータの数を取得できます。
max(ディクショナリ)min(ディクショナリ)は、ディクショナリ内のデータが最大/最小のデータのキーを返します。

データの取得

ディクショナリでバリューを取得する場合は、キーを指定します。
ディクショナリ[キー]で取得できますが、この記法の場合、ディクショナリに存在しない
キーを指定した場合、エラーが発生します。
キー in ディクショナリでキーが存在することを確認して処理を行う方法もありますが、
もう1つのキーの指定方法がディクショナリ.get(キー)です。こちらはディクショナリに存在しない
キーを指定してもエラーにはなりません。さらに、
ディクショナリ.get(キー,キーが存在しない場合のバリュー)と記述することで、
キーが存在しない場合に返す値を設定することが出来ます。

データの追加・更新

ディクショナリ[キー] = バリュー
キーがディクショナリ内に存在しない場合はデータの追加、存在する場合はバリューの更新となります。

データの削除

del ディクショナリ[キー]
キーとキーに対応したバリューのデータを削除します。ただし、ディクショナリに存在しない
キーを指定した場合、エラーが発生します。
ディクショナリ.pop(キー)は、プログラムの出力結果でも分かるように、バリューを取得した上で削除します。
(箱から取り出す処理をイメージしてみてください)
ただし、こちらもディクショナリに存在しないキーを指定した場合、エラーが発生します。
キー in ディクショナリでキーが存在することを確認して処理を行う方法もありますが、
popはgetと同様に、ディクショナリ.pop(キー,キーが存在しない場合のバリュー)と記述することで、
エラーを発生することなくキーが存在しない場合のバリューを返すよう記述することが可能です。

次: Python基礎講座(8 分岐)