note.nkmk.me

Pythonで辞書に要素を追加、辞書同士を連結(結合)

Date: 2018-04-13 / Modified: 2019-06-05 / tags: Python, 辞書

Pythonで辞書(dict型オブジェクト)に新たな要素を追加したり、既存の要素の値を更新したりする方法を説明する。

  • キーを指定して辞書に要素を追加・更新
  • 辞書同士を連結(結合)、複数の要素を追加・更新: update()

キーkeyの存在を確認する方法やキーの名前を変更する方法については以下の記事を参照。

スポンサーリンク

キーを指定して辞書に要素を追加・更新

以下の書き方で辞書の要素を追加・更新できる。

辞書オブジェクト[キー] = 

存在しないキーを指定すると新たな要素が追加、存在するキーを指定すると既存の値が更新(上書き)される。

d = {'k1': 1, 'k2': 2}

d['k3'] = 3
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}

d['k1'] = 100
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3}

存在するキーの値を更新したくない場合はsetdefault()メソッドを使う。以下の記事を参照。

辞書同士を連結(結合)、複数の要素を追加・更新: update()

複数の辞書オブジェクトを連結(結合)したり、複数の要素を一気に追加するには辞書オブジェクトのメソッドupdate()を使う。

辞書同士の連結(結合)

update()メソッドの引数に別の辞書オブジェクトを指定すると、その辞書オブジェクトの要素がすべて追加される。既存のキーと重複する場合は引数に指定した辞書の値で上書きされる。

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

d1.update(d2)
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

update()の引数に複数の辞書をそのまま指定するとエラーとなる。

d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}

# d1.update(d2, d3)
# TypeError: update expected at most 1 arguments, got 2

次に説明するように、update()ではキーワード引数(key=value)として新たな要素を追加できるので、辞書に**をつけてそれぞれの要素をキーワード引数として展開して渡せばOK。

d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}

これまでの例のように、update()を使うと元のオブジェクトが更新される。複数の辞書を結合して新たな辞書を生成したい場合、{**d1, **d2}(Python3.5から)またはdict(**d1, **d2)とする。詳細は以下の記事を参照。

複数の要素を追加・更新

update()メソッドにキーワード引数key=valueを指定すると、キーkeyと値valueが追加される。既存のキーと重複する場合は引数に指定した値で上書きされる。

d = {'k1': 1, 'k2': 2}

d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

update()メソッドには(key, value)のリストを引数として指定することも可能。既存のキーと重複する場合は引数に指定した値で上書きされる。

d = {'k1': 1, 'k2': 2}

d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

zip()関数を組み合わせると、キーのリストと値のリストから要素を追加できる。

d = {'k1': 1, 'k2': 2}

keys = ['k1', 'k3', 'k4']
values = [100, 3, 4]

d.update(zip(keys, values))
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

zip()関数については以下の記事を参照。

スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事