辞書の操作:要素の追加・更新・削除#

はじめに#

前回は、Pythonの辞書の基本的な概念と使い方について学びました。辞書はキーと値のペアでデータを管理する便利なデータ構造です。今回は、辞書を使いこなすために必要な「要素の追加」「要素の更新」「要素の削除」などの基本操作について詳しく学んでいきましょう。

辞書への要素の追加#

辞書に新しい要素(キーと値のペア)を追加するのはとても簡単です。存在しないキーに値を代入するだけで、新しい要素が追加されます。

>
# 空の辞書を作成
student = {}
print("最初の辞書:", student)

# 要素を追加していく
student["名前"] = "鈴木"
print("名前を追加後:", student)

student["年齢"] = 19
print("年齢を追加後:", student)

student["好きな科目"] = "数学"
print("好きな科目を追加後:", student)
最初の辞書: {}
名前を追加後: {'名前': '鈴木'}
年齢を追加後: {'名前': '鈴木', '年齢': 19}
好きな科目を追加後: {'名前': '鈴木', '年齢': 19, '好きな科目': '数学'}

このように、辞書名[新しいキー] = 値 という形で、簡単に要素を追加できます。

辞書の要素の更新#

既に存在するキーに対して値を代入すると、そのキーに関連付けられた値が更新されます。

>
# 初期の辞書
product = {"名前": "ノートパソコン", "価格": 80000, "在庫": 5}
print("初期の商品情報:", product)

# 価格を更新する
product["価格"] = 75000  # セール価格に変更
print("価格更新後:", product)

# 在庫数を更新する
product["在庫"] = 3  # 2台売れた
print("在庫更新後:", product)
初期の商品情報: {'名前': 'ノートパソコン', '価格': 80000, '在庫': 5}
価格更新後: {'名前': 'ノートパソコン', '価格': 75000, '在庫': 5}
在庫更新後: {'名前': 'ノートパソコン', '価格': 75000, '在庫': 3}

update() メソッドで複数の要素を追加・更新する#

update() メソッドを使うと、複数の要素を一度に追加したり更新したりできます。

>
# 初期の辞書
user = {"id": 1001, "username": "tanaka", "active": True}
print("初期のユーザー情報:", user)

# 複数の要素を一度に更新・追加する
user.update({"username": "tanaka_new", "email": "tanaka@example.com", "last_login": "2025-04-27"})
print("更新後のユーザー情報:", user)
初期のユーザー情報: {'id': 1001, 'username': 'tanaka', 'active': True}
更新後のユーザー情報: {'id': 1001, 'username': 'tanaka_new', 'active': True, 'email': 'tanaka@example.com', 'last_login': '2025-04-27'}

この例では、username は更新され、emaillast_login は新しく追加されています。

辞書から要素を削除する#

辞書から要素を削除するには、いくつかの方法があります。

1. del 文を使う方法#

del 文を使うと、指定したキーと、それに関連付けられた値を削除できます。

>
# 初期の辞書
car = {"メーカー": "トヨタ", "モデル": "プリウス", "年式": 2022, "色": "白"}
print("初期の車の情報:", car)

# 「色」を削除
del car["色"]
print("「色」削除後:", car)

# 存在しないキーを削除しようとするとエラーになる
# del car["オプション"]  # KeyError: 'オプション'
初期の車の情報: {'メーカー': 'トヨタ', 'モデル': 'プリウス', '年式': 2022, '色': '白'}
「色」削除後: {'メーカー': 'トヨタ', 'モデル': 'プリウス', '年式': 2022}

2. pop() メソッドを使う方法#

pop() メソッドは、指定したキーの要素を削除し、削除した値を返します。また、キーが存在しない場合のデフォルト値も設定できるので、del よりも安全に使えます。

>
# 初期の辞書
employee = {"名前": "佐藤", "部署": "営業", "社員番号": "E001", "役職": "主任"}
print("初期の社員情報:", employee)

# 「役職」を削除し、その値を取得
role = employee.pop("役職")
print(f"削除した役職: {role}")
print("「役職」削除後:", employee)

# 存在しないキーを指定した場合(デフォルト値あり)
salary = employee.pop("給与", "情報なし")  # 「給与」というキーがなければ「情報なし」を返す
print(f"給与情報: {salary}")
print("操作後の社員情報:", employee)  # 辞書は変更されない

# 存在しないキーを指定した場合(デフォルト値なし)
# employee.pop("給与")  # KeyError: '給与'
初期の社員情報: {'名前': '佐藤', '部署': '営業', '社員番号': 'E001', '役職': '主任'}
削除した役職: 主任
「役職」削除後: {'名前': '佐藤', '部署': '営業', '社員番号': 'E001'}
給与情報: 情報なし
操作後の社員情報: {'名前': '佐藤', '部署': '営業', '社員番号': 'E001'}

3. clear() メソッドで全要素を削除#

clear() メソッドは、辞書からすべての要素を削除し、空の辞書にします。

>
# 初期の辞書
inventory = {"りんご": 25, "バナナ": 15, "オレンジ": 10}
print("初期の在庫:", inventory)

# すべての要素を削除
inventory.clear()
print("在庫クリア後:", inventory)  # 空の辞書になる
初期の在庫: {'りんご': 25, 'バナナ': 15, 'オレンジ': 10}
在庫クリア後: {}

辞書をコピーする方法#

辞書を別の変数にコピーする場合、単純に = 演算子を使うと注意が必要です。

>
# 元の辞書
original = {"a": 1, "b": 2, "c": 3}
print("元の辞書:", original)

# 間違ったコピー方法
wrong_copy = original  # これは新しいコピーを作らず、同じ辞書を参照するだけ

# 正しいコピー方法
correct_copy = original.copy()  # .copy() メソッドを使うと辞書の内容をコピーできる

# 元の辞書を変更してみる
original["d"] = 4

print("変更後の元の辞書:", original)
print("間違ったコピー:", wrong_copy)      # これも変更されている
print("正しいコピー:", correct_copy)      # これは元のままである
元の辞書: {'a': 1, 'b': 2, 'c': 3}
変更後の元の辞書: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
間違ったコピー: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
正しいコピー: {'a': 1, 'b': 2, 'c': 3}

上の例から分かるように、単に = で代入すると、新しい辞書が作られるのではなく、同じ辞書を参照する別の名前が作られるだけです。そのため、一方を変更すると、もう一方も変更されてしまいます。

一方、copy() メソッドを使うと、辞書の内容がコピーされた新しい辞書が作られます。これにより、元の辞書を変更しても、コピーした辞書は影響を受けません。

ただし、辞書の中に辞書やリストなど変更可能なオブジェクトが含まれている場合は、さらに注意が必要です。このような場合は、内側のオブジェクトも別々にコピーする必要があります。これは少し高度な内容なので、今は「辞書をコピーするには copy() メソッドを使う」ということだけ覚えておきましょう。

まとめ#

今回は、Pythonの辞書の操作方法について学びました。

  • 要素の追加:辞書[新しいキー] = 値 または 辞書.update(別の辞書)
  • 要素の更新:辞書[既存のキー] = 新しい値 または 辞書.update(別の辞書)
  • 要素の削除:del 辞書[キー]辞書.pop(キー)辞書.clear()
  • 辞書のコピー:辞書.copy()

今回学んだ操作方法を身につけることで、辞書を使ってデータを効率よく管理できるようになるでしょう。次回は、辞書のキーや値を一覧表示する方法や、辞書を使ったループ処理について学んでいきます。