Pythonにおける辞書の使い方をまとめました。
目次
辞書型の作り方
基本の作り方
{}で囲み、「key : value」という形にします。複数ある場合は、カンマで区切ります。
d = {'x': 10, 'y': 20}
print(d) # {'x': 10, 'y': 20}
keyは数値でも大丈夫です。
d = {1: 10, 2: 20}
print(d) # {1: 10, 2: 20}
重複したkeyは入れることができません。大文字と小文字は区別します。
# keyのxが重複している。後に入力したほうが残る
d = {'x': 10, 'y': 20, 'x': 30}
print(d) # {'x': 30, 'y': 20}
# 大文字と小文字は区別する
d = {'x': 10, 'y': 20, 'X': 30}
print(d) # {'x': 10, 'y': 20, 'X': 30}
何も値の入っていない辞書も作れます。
# 空の辞書を作成
d = {}
print(d) # {}
d1 = dict(x=10, y=20)
print(d1) # {'x': 10, 'y': 20}
dict()を使って辞書を作る
dict()を使った辞書の作り方もあります。
# 空の辞書を作成
d = dict()
print(d) # {}
タプル(key, value)のリストから辞書を作るときにも使います。
# タプルのリストで作成
d = dict([('x', 10), ('y', 20)])
print(d) # {'x': 10, 'y': 20}
リスト[key, value]のタプルでも作成できます。
# リストのタプルで作成
d = dict((['x', 10], ['y', 20]))
print(d) # {'x': 10, 'y': 20}
辞書の要素を追加する方法
keyがあると更新、なければ追加する場合
d1 = {'a':111, 'b': 222, 'c': 333}
d1['d'] = 444
print(d1) # {'a': 111, 'b': 222, 'c': 333, 'd': 444}
keyがあると何もしない、なければ追加する場合
d1 = {'a':111, 'b': 222, 'c': 333}
d1.setdefault('d', 444) #key「d」が追加される
d1.setdefault('c', 555) #key「c」はすでにあるので何も変更しない
print(d1) # {'a': 111, 'b': 222, 'c': 333, 'd': 444}
他の辞書で更新する場合
d1 = {'a':111, 'b': 222, 'c': 333}
d1.update({'d': 444}) # 新しく辞書を追加
print(d1) # {'a': 111, 'b': 222, 'c': 333, 'd': 444}
# 他の辞書から更新する場合
d2 = {'a': 1111, 'e': 555}
d1.update(d2)
print(d1)
# {'a': 1111, 'b': 222, 'c': 333, 'd': 444, 'e': 555} eは追加し、aは更新
複数の辞書を1つにまとめる場合
d1={'A':11, 'B':22, 'C':33}
d2={'D':44, 'E':55}
d3={'F':66}
d4 = {}
l = [d1, d2, d3]
for dict in l:
d4.update(dict)
print(d4)
# {'A': 11, 'B': 22, 'C': 33, 'D': 44, 'E': 55, 'F': 66}
for文を使わない場合
d1={'A':11, 'B':22, 'C':33}
d2={'D':44, 'E':55}
d3={'F':66}
d4 = {**d1, **d2, **d3}
print(d4)
#{'A': 11, 'B': 22, 'C': 33, 'D': 44, 'E': 55, 'F': 66}
key : value形式も一緒に入れられます。
d5 = {'G':77, 'H':88}
d6 = {'I':99}
d7 = {**d5, **d6, 'J':111}
print(d7) # {'G': 77, 'H': 88, 'I': 99, 'J': 111}
辞書の値を取得する方法
作成した辞書はkeyをもとにvalueを取得することができます。
辞書[key]で取得する
辞書[key]とすると値を取得することができます。
# keyの値を取得する
d = {'x': 10, 'y': 20, 'z': 30}
print(d['x']) # 10
keyにないものを指定するとKeyErrorになります。
# keyのないものを指定するとエラーになる
d = {'x': 10, 'y': 20, 'z': 30}
print(d['v']) # KeyError: 'v'
getメソッドを使うと、keyがないものを指定してもエラーが出ません。代わりに「None」が返ってきます。
# getの場合は、Noneが返ってくる
d = {'x': 10, 'y': 20, 'z': 30}
print(d.get('v')) # None
keyがあるかどうか調べる
辞書にkeyがあるかどうか調べるにはin、not inを使って調べることができます。
# keyがあるかどうか調べる
d = {'x': 10, 'y': 20, 'z': 30}
result = 'x' in d
print(result) # True
最大値・最小値を取得する
例えば、valueの最大値を求める場合はmaxを使います。
d = {'B':2, 'A':1, 'D':4, 'C':3}
print(max(d.values())) # 4
valueが最大のkeyを求める場合はlambda式を使うと簡単に求められます。
# valueが最大のkeyを取得する
d = {'B':2, 'A':1, 'D':4, 'C':3}
max_key = max(d.keys(), key=lambda k: d[k])
print(max_key) # D