Pythonで辞書(dict)にキーと値を追加する方法
- 作成日: 2021-05-17
- 更新日: 2023-12-26
- カテゴリ: Python
Pythonで辞書に値を追加する方法
Pythonでは辞書(dict)というデータ型を扱うことができます。
辞書を使うとキーに対して値を設定して管理することができます。
この記事では辞書にキーと値(アイテム)を新しく追加する方法を解説します。
結論から言うと↓のようにやります。
d = {'a': 1, 'b': 2}
d['c'] = 3 # 辞書にキーと値(アイテム)を追加
print(d)
# {'a': 1, 'b': 2, 'c': 3}
具体的に↓を見ていきます。
- 辞書にアイテムを追加する方法
- 辞書に他の辞書を連結する方法
- update()で複数のアイテムを追加
- |演算子で辞書同士を結合
- |=演算子で辞書に辞書を連結
関連記事
* Pythonのdict(辞書)の使い方
辞書にアイテムを追加する方法
辞書は↓のように作成します。
d = {'a': 1, 'b': 2}
↑の辞書にはa
というキーに1
という値が、b
というキーに2
という値が紐づけられています。
この辞書に値を追加する場合を考えます。
辞書に値を追加するには↓のようなフォーマットで辞書を操作します。
辞書[キー] = 値
先ほどのd
という辞書に、キーc
で値3
というアイテムを紐づける場合は↓のようにします。
d['c'] = 3 # キーがc, 値が3
タプルのリストを辞書に追加する
タプルにキーと値を入れているリストがある場合、それをfor
文で回せば↓のように辞書に追加することができます。
d = {'a': 1, 'b': 2}
lis = [('c', 3), ('d', 4)]
for k, v in lis:
d[k] = v
print(d)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
この方法よりは後述の|=
演算子を使ったほうが楽に同様のことが行えます。
複数のリストをzipでまとめる
キーの入ったリストと値の入ったリストを用意して、それをzip()
してfor
文で回せば簡単に辞書にアイテムを追加できます。
d = {'a': 1, 'b': 2}
l1 = ['c', 'd']
l2 = [3, 4]
for k, v in zip(l1, l2):
d[k] = v
print(d)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
ちなみにzip()
の返り値は後述するupdate()
にもそのまま渡すことができます。
for
文を使うよりはそちらの方法のほうがスマートに行えます。
辞書に他の辞書を連結する方法
すでに存在する辞書に別の辞書を連結したい場合は↓のようなフォーマットで辞書を操作します。
辞書.update(別の辞書)
例えば↓のようにです。
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d1.update(d2)
print(d1)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
↑の場合、d1
と言う辞書にd2
という辞書を連結しています。
d1
のupdate()
はd1
に対して破壊的な変更を行います。
ちなみにキーが被っている場合は↓のようになります。
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
d1.update(d2)
print(d1)
# {'a': 1, 'b': 3, 'c': 4}
↑のようにキーが被っている場合はupdate()
の引数側のアイテムが優先されます。
zip()の結果をupdate()に渡す
キーの入ったリストと値の入ったリストを用意して、それをzip()
すればそのままupdate()
に渡すことができます。
d1 = {'a': 1, 'b': 2}
l1 = ['c', 'd']
l2 = [3, 4]
d1.update(zip(l1, l2))
print(d1)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
update()で複数のアイテムを追加
update()
メソッドのキーワード引数にキーと値を指定すれば、複数のアイテムを同時に追加することができます。
↓のようにします。
d1 = {'a': 1, 'b': 2}
d1.update(c=3, d=4)
print(d1)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
↑の場合、d1
という辞書にupdate()
でc=3
, d=4
というアイテムが追加されています。
|演算子で辞書同士を結合
Python3.9から|
演算子で辞書同士を結合できるようになりました。
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d3 = d1 | d2
print(d3)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
キーが重複している場合は後続の辞書が優先されます。
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
d3 = d1 | d2
print(d3)
# {'a': 1, 'b': 3, 'c': 4}
|=演算子で辞書に辞書を連結
Python3.9から|=
演算子で辞書に辞書を結合できるようになりました。
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d1 |= d2
print(d1)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
↑の場合、d1
という辞書にd2
が結合されます。
また、|=
では(キー, 値)
のタプルを指定することができます。
d1 = {'a': 1, 'b': 2}
d2 = [('c', 3), ('d', 4)]
d1 |= d2
print(d1)
# {'a': 1, 'b': 2, 'd': 4, 'c': 3}
このフォーマットは|
演算子では指定できません。
↓のように例外TypeError
が送出されます。
d1 = {'a': 1, 'b': 2}
d2 = [('c', 3), ('d', 4)]
try:
d3 = d1 | d2
except TypeError as e:
print(e)
# unsupported operand type(s) for |: 'dict' and 'set'
おわりに
今回はPythonの辞書の追加方法を見てみました。
辞書は非常によく使うデータ型ですよね。
🦝 < 辞書を枕にして寝よう