Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Python辞典

  1. トップページ
  2. Python辞典
  3. 辞書.update() / 辞書.pop() / 辞書.clear()

辞書.update() / 辞書.pop() / 辞書.clear()

辞書を更新・削除するメソッドです。辞書へのマージや特定キーの削除、全クリアまで対応します。

構文
# 別の辞書またはキーと値のペアで辞書を更新します(既存キーは上書き)。
辞書.update(他の辞書またはキーワード引数)

# 指定したキーを削除して値を返します。キーが存在しない場合はデフォルト値を返します。
辞書.pop(キー, デフォルト値)

# 最後に挿入されたキーと値のペアを削除して返します(Python 3.7以降は挿入順が保証)。
辞書.popitem()

# 辞書のすべての要素を削除します(辞書オブジェクト自体は残ります)。
辞書.clear()

# 特定のキーと値を削除します(戻り値なし)。
del 辞書[キー]
関数一覧
メソッド・構文概要
dict.update(other)辞書を other の内容で更新します。既存キーの値は上書きされ、新しいキーは追加されます。戻り値は None です。
dict.pop(key, default)指定したキーを削除してその値を返します。キーが存在しない場合は default を返します。default を省略してキーがない場合は KeyError が発生します。
dict.popitem()最後に挿入されたキーと値のペアを(key, value)タプルとして削除して返します。辞書が空の場合は KeyError が発生します。
dict.clear()辞書のすべての要素を削除して空の辞書にします。戻り値は None です。
del dict[key]指定したキーと値のペアを削除します。値は返されません。
サンプルコード
# update() で辞書を更新します。
user = {"name": "太郎", "age": 20}
updates = {"age": 21, "city": "大阪"}  # age を更新、city を追加します。
user.update(updates)
print(user)  # {'name': '太郎', 'age': 21, 'city': '大阪'}

# キーワード引数でも更新できます。
user.update(job="エンジニア", email="taro@example.com")
print(user)  # job と email が追加されます。

# Python 3.9以降では | 演算子(マージ)と |= 演算子(更新)が使えます。
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 20, "c": 30}
merged = dict1 | dict2  # 新しい辞書を作成します(dict1 は変わりません)。
print(merged)   # {'a': 1, 'b': 20, 'c': 30}
dict1 |= dict2  # dict1 を直接更新します。
print(dict1)    # {'a': 1, 'b': 20, 'c': 30}

# pop() でキーを削除して値を取り出します。
profile = {"name": "花子", "age": 25, "temp_token": "abc123"}
token = profile.pop("temp_token")  # 削除して値を取得します。
print(token)    # abc123
print(profile)  # {"name": "花子", "age": 25}

# デフォルト値を指定して存在しないキーを安全に削除します。
removed = profile.pop("phone", None)
print(removed)  # None(エラーなし)

# popitem() で最後に追加したキーと値を取り出します。
data = {"x": 1, "y": 2, "z": 3}
last = data.popitem()
print(last)   # ('z', 3)(最後に挿入された要素)
print(data)   # {'x': 1, 'y': 2}

# del でキーを削除します(値は返されません)。
settings = {"theme": "dark", "lang": "ja", "debug": True}
del settings["debug"]
print(settings)  # {'theme': 'dark', 'lang': 'ja'}

# clear() ですべての要素を削除します。
settings.clear()
print(settings)  # {}(空の辞書)

# 辞書のフィルタリング(特定の条件を満たすキーだけ残す)実用例です。
config = {
    "host": "localhost",
    "port": 5432,
    "debug": True,
    "password": "secret",
    "timeout": 30
}
# パスワードを含む設定をログ用に安全に複製します。
safe_config = {k: v for k, v in config.items() if k != "password"}
print(safe_config)  # password キーが除外されます。
概要

『update()』は辞書同士のマージに使います。既存キーの値は無条件に上書きされるため、「既存の値を保持したい場合」には使えません。既存のキーを保持しながら新しいキーだけを追加したい場合は、引数の順序を入れ替えるか、『setdefault()』を使ってください。

『pop()』はキーを削除しながらその値を使いたい場合に便利です。存在しないキーをデフォルト値なしで『pop()』すると KeyError が発生します。これはリストの『pop()』と同様の挙動です。

Python 3.9以降では『|』演算子(マージ)と『|=』演算子(更新)が追加されました。『dict1 | dict2』は新しい辞書を返すため元の辞書は変更されません(『update()』と同様の動作は『|=』です)。辞書のキー・値の確認については『辞書.keys() / values() / items()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。