🐍 Python
del文 と clear() でキーを削除する
値を使わずにキーだけ削除したい場合はdel文、辞書の中身をすべて空にしたい場合はclear()を使います。どちらも戻り値を使わない「元を直接変更する」操作です。
del d[key] # keyとその値を削除。無ければKeyError
d.clear() # すべてのキーと値を削除し、空の辞書にする
d = {"a": 1, "b": 2, "c": 3}
del d["b"]
print(d)
# {'a': 1, 'c': 3}
# 存在しないキーへのdelはKeyError
d = {"a": 1, "c": 3}
try:
del d["z"]
except KeyError as e:
print("KeyError:", e)
# KeyError: 'z'
# clear()で全要素を削除
d = {"a": 1, "c": 3}
d.clear()
print(d)
# {}
print(len(d))
# 0
delとclear()の違い
- del d[key]
- 文であってメソッドではない。特定の1キーだけを削除する。値は受け取れない(値も必要なら
pop()を使う) - d.clear()
- 辞書オブジェクト自体は保持したまま、中身だけを空にする。
d = {}と似ているが、他の変数から同じ辞書を参照している場合の挙動が異なる
💡 AIコードレビュー観点:d = {}とd.clear()は別物
d = {}は新しい空の辞書を作って変数dに代入し直すだけで、元の辞書オブジェクトはそのまま残ります。他の変数(alias = dのような)が元の辞書を参照している場合、d = {}ではaliasの中身は空になりません。一方d.clear()は同じオブジェクトの中身を空にするので、aliasからも空になったのが見えます。AIが生成したコードで「共有されているはずの辞書を空にしたいのにd = {}と書いている」場合はバグの可能性があります。