🐍 Python
dict.update() で複数キーをまとめて更新する
update()は1回の呼び出しで複数のキーと値を一括更新できるメソッドです。既存のキーは値が上書きされ、無いキーは新規追加されます。別の辞書と結合したいときによく使います。
d.update(other_dict) # 別の辞書で一括更新
d.update(key1=v1, ...) # キーワード引数で一括更新
d.update([(k1, v1), ...]) # (キー, 値)のタプルのリストで一括更新
# 辞書同士のマージ(既存キーは上書き)
base = {"a": 1, "b": 2}
base.update({"b": 20, "c": 3})
print(base)
# {'a': 1, 'b': 20, 'c': 3}
# キーワード引数での更新
base = {"a": 1, "b": 20, "c": 3}
base.update(d=4, e=5)
print(base)
# {'a': 1, 'b': 20, 'c': 3, 'd': 4, 'e': 5}
# (キー, 値)のタプルのリストでも更新できる
base = {"a": 1, "b": 20, "c": 3, "d": 4, "e": 5}
base.update([("f", 6), ("g", 7)])
print(base)
# {'a': 1, 'b': 20, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7}
update()に渡せる形式
- 辞書
- もう1つの
dictを渡すと、そのキーと値で上書き・追加される - キーワード引数
update(key=value, ...)の形。キー名が識別子として書ける場合に使いやすい- イテラブル
(キー, 値)のタプルを要素に持つリストなど、反復可能なものも渡せる
💡 AIコードレビュー観点:update()は元の辞書を直接書き換える
update()はlist.sort()と同様に戻り値がNoneで、呼び出した辞書自身を直接書き換えます。result = base.update(other)のように戻り値を変数に代入するコードを見つけたら、resultは常にNoneになるバグです。「元を書き換えずに新しい辞書がほしい」場合はmerged = {**base, **other}やbase | otherを使いましょう(merge-operatorのページで詳しく解説)。