Pythonの辞書(dict)は「ミュータブル(変更可能)」なオブジェクトです。そのため、作成した後でも新しいキーと値のペアを追加したり、既存のキーに対応する値を変更したりすることができます。
興味深い点として、Pythonでは「新しい要素の追加」と「既存要素の更新」に、全く同じ構文を使用します。
この記事では、辞書に対するデータの追加と更新の挙動について解説します。
目次
基本構文
辞書への書き込み操作は、以下の構文を使用します。
辞書変数[キー] = 設定したい値
この構文を実行した際、Pythonインタプリタは以下のように判断して処理を行います。
- キーが存在しない場合: 新しいキーと値のペアとして追加します。
- キーが既に存在する場合: そのキーに対応する値を新しい値で**上書き(更新)**します。
1. 新しい要素の追加
辞書に存在しないキーを指定して値を代入すると、そのペアが辞書に追加されます。
例として、果物の在庫管理データを扱います。
# 初期の在庫データ
fruit_stock = {
"apple": 50,
"orange": 30
}
print(f"追加前: {fruit_stock}")
# 新しい商品 "banana" (在庫 20) を追加
# "banana" というキーはまだ存在しないため、新規追加となる
fruit_stock["banana"] = 20
print(f"追加後: {fruit_stock}")
実行結果:
追加前: {'apple': 50, 'orange': 30}
追加後: {'apple': 50, 'orange': 30, 'banana': 20}
"banana" という新しいキーと、その値 20 が辞書に格納されました。
2. 既存の要素の更新(上書き)
辞書に既に存在するキーを指定して値を代入すると、元の値が消去され、新しい値に置き換わります。
# 現在の在庫データ
# {'apple': 50, 'orange': 30, 'banana': 20}
# "apple" の在庫数を 50 から 45 に変更
# "apple" というキーは既に存在するため、更新となる
fruit_stock["apple"] = 45
print(f"更新後: {fruit_stock}")
実行結果:
更新後: {'apple': 45, 'orange': 30, 'banana': 20}
"apple" の値が 50 から 45 に変更されました。
応用:値の演算による更新
現在の値を元に計算を行い、その結果で更新することも頻繁に行われます。この場合、複合代入演算子(+=, -= など)が使用できます。
# "orange" の在庫が 10 個売れた(減らす)場合
fruit_stock["orange"] -= 10 # fruit_stock["orange"] = fruit_stock["orange"] - 10 と同じ
print(f"演算更新後: {fruit_stock}")
実行結果:
演算更新後: {'apple': 45, 'orange': 20, 'banana': 20}
まとめ
- 辞書の要素操作は
辞書[キー] = 値という統一された構文で行います。 - 指定したキーがなければ追加、あれば更新(上書き)されます。
- 意図せず既存のデータを上書きしないよう、キーの存在には注意が必要です(必要であれば
in演算子で確認します)。
