Python

Python辞書型の追加や取り出し方法をまとめて紹介

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