Python: ディクショナリの要素を削除 del, pop, clear

Pythonでディクショナリ(辞書)の要素を削除する場合、 del文やpop()メソッド、clear()メソッドを使う方法があります。 それぞれの方法について解説します。

del文で削除

del文の書式は次の通りです。ディクショナリ名の後にブラケット[] でキーを指定します。

del ディクショナリ名[キー]

ディクショナリから指定したキーの要素を削除します。

次のコードはキーが "a" の要素を削除しています。

d = {"a": 10, "b": 20, "c": 30}

# 要素を削除
del d["a"]

print(d) # {'b': 20, 'c': 30}

存在しないキーを指定するとエラーが出る

del文では、存在しないキーを指定するとエラー「KeyError」が発生します。

d = {"a": 10, "b": 20, "c": 30}

# 要素を削除
del d["x"]
実行結果
Traceback (most recent call last):
  File "test.py", line 7, in 
    del d["x"]
KeyError: 'x'

キーの存在を確認する方法

in 演算子を使って、キーが存在することを確認した後に 削除するとエラーは防げます。

d = {"a": 10, "b": 20, "c": 30}

if "x" in d:
	# 要素を削除
	del d["x"]
else:
	#存在しない場合
	print(False)

pop()メソッドで削除

del文ではキーが存在しない場合にエラーが発生しますが、 dictオブジェクトのpop()メソッドではキーが存在しな場合にエラーにならないように することができます。
pop()メソッドの書式は次の通りです。

書式
ディクショナリ名.pop(キー[, 非存在時の値])

pop()メソッドは引数に指定したキーの要素を削除します。 戻り値は削除した要素の値です。
キーが存在しない場合は、「非存在時の値」が戻りますが、 「非存在時の値」を指定していなければエラー(KeyError)となります。

次のコードではpop()メソッドを3回実行して、戻り値を表示しています。 最後のpop()メソッドは「非存在時の値」を指定しておらず、 キーも存在しないためエラー「KeyError」が発生します。

d = {"a": 10, "b": 20, "c": 30}

print(d.pop("a", None)) # 10

print(d.pop("x", None)) # None

print(d.pop("x")) # エラー KeyError

clear()メソッドで全ての要素を削除

dictオブジェクトのclear()メソッドを使うとすべての要素を削除できます。

書式
ディクショナリ名.clear()

引数は必要なく、ディクショナリは空の状態{}になります。

d = {"a": 10, "b": 20, "c": 30}

d.clear()

print(d)  # {}
Python