辞書から要素を削除するにはdel文やclearメソッドなどを使える。また、辞書の要素を追加/上書きするには代入文やupdateメソッド、「|=」演算子を使える。これらの方法を一覧する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
# 辞書の要素の削除
d = {'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3}
print(d) # {'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3}
# del文で指定してキー/値の組を削除
del d['key1']
print(d) # {'key0': 0, 'key2': 2, 'key3': 3}
# clearメソッドで辞書の全要素を削除
d.clear()
print(d) # {}
# popメソッドは指定されたキーの値を返し、そのキー/値の組を辞書から削除
d = {'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3}
item = d.pop('key0')
print(item) # 0
print(d) # {'key1': 1, 'key2': 2, 'key3': 3}
# popitemメソッドは末尾からキー/値を取り出し、その組を辞書から削除
item = d.popitem()
print(item) # ('key3', 3)
print(d) # {'key1': 1, 'key2': 2}
# 要素(キー/値の組)の追加と上書き
d = {'key0': 0, 'key1': 1}
# 辞書に要素を追加
# 存在しないキーを指定してその値を代入
d['key2'] = 2
print(d) # {'key0': 0, 'key1': 1, 'key2': 2}
# 存在するキーを指定するとその値が上書きされる
d['key1'] = 10
print(d) # {'key0': 0, 'key1': 10, 'key2': 2}
# updateメソッドで辞書を更新
# 存在するキーの値は上書きされ、存在しないキーとその値は追加される
d = {'key0': 0, 'key1': 1, 'key2': 2}
d.update({'key1': 11, 'key3': 3})
print(d) # {'key0': 0, 'key1': 11, 'key2': 2, 'key3': 3}
d.update([('key1', 1), ('key3', 33)]) # 反復可能オブジェクト
print(d) # {'key0': 0, 'key1': 1, 'key2': 2, 'key3': 33}
d.update(key2=22, key4=4) # キーワード引数を使う場合
print(d) # {'key0': 0, 'key1': 1, 'key2': 22, 'key3': 33, 'key4': 4}
d2 = {'key4': 44, 'key5': 5}
d |= d2
print(d) # {'key0': 0, 'key1': 1, 'key2': 22, 'key3': 33, 'key4': 44, 'key5': 5}
辞書からその要素を削除するには次の方法がある(本稿ではキーと値の組のことを「要素」と表記する)。
また、辞書に要素を追加したり、既存のキーの値を変更したりするには次の方法がある。
以下ではこれらについて見ていくことにする。
辞書の特定の要素を指定するには、del文で辞書に対してその要素のキーを指定する。
以下に例を示す。
d = {'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3}
print(d) # {'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3}
del d['key1']
print(d) # {'key0': 0, 'key2': 2, 'key3': 3}
この例では{'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3}という3つの要素を持つ辞書を作成し、その後、del文でキー「'key1'」を指定して辞書の要素を削除している。最後の行では辞書から指定したキーの要素が削除されているかを確認している。
なお、存在しないキーを削除しようとすると、KeyError例外が発生する。
del d['key100'] # KeyError
辞書の全ての要素をまとめて削除するときには、clearメソッドを使用する。以下に例を示す。
d.clear()
print(d) # {}
先ほどのdel文で辞書dには{'key0': 0, 'key2': 2, 'key3': 3}という要素が格納されていた。そこでclearメソッドを呼び出したので、その内容がまとめて削除され、辞書が空になった。
辞書の要素を削除するといった場合、通常はここまでに見てきた2つを使うことになるだろう。しかし、辞書には要素を削除する結果をもたらすpopメソッドとpopitemメソッドもある。これらについても簡単に触れておこう(これらについては「辞書の要素を取得するには」でも触れているので、そちらも参照されたい)。
以下に例を示す。
d = {'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3}
item = d.pop('key0')
print(item) # 0
print(d) # {'key1': 1, 'key2': 2, 'key3': 3}
ここでは辞書dは{'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3}となっている。上のコードでは、キーとして'key0'を指定してpopメソッドを呼び出している。そのため、戻り値は'key0'の値である「0」となり、キー/値の組は辞書から削除され{'key1': 1, 'key2': 2, 'key3': 3}になる。なお、popメソッドの第2引数には、指定したキーが辞書になかったときの戻り値も指定できる。第2引数を指定した場合は、キーが辞書に存在しなければ、第2引数の値が戻り値となる。第2引数を指定しなかった場合、キーが辞書に存在しなければKeyError例外が発生する。
popitemメソッドの使用例は以下の通り。
item = d.popitem()
print(item) # ('key3', 3)
print(d) # {'key1': 1, 'key2': 2}
先の例でpopメソッドを呼び出したことで、辞書は{'key1': 1, 'key2': 2, 'key3': 3}となっている。この状態でpopitemメソッドを呼び出すと、末尾の要素のキーである'key3'とその値である「3」が戻り値となり、その要素が辞書から削除されていることが分かるはずだ。
辞書に要素を追加したり、既存のキーの値を上書き(変更)したりするには以下の方法がある。
キーが辞書に存在していれば上書き、存在していなければ追加となる。上では「代入」と書いたが、これは代入文でなくともupdateメソッドや累算代入演算子「|=」を使う場合でも同様だ。
以下に代入文で辞書に要素を追加する例と、既存のキーの値を上書きする例を示す。まずは要素を追加する例から。
d = {'key0': 0, 'key1': 1}
d['key2'] = 2
print(d) # {'key0': 0, 'key1': 1, 'key2': 2}
この例では辞書dの内容は{'key0': 0, 'key1': 1}になっている。ここで、辞書に存在しないキー'key2'を指定して代入を行うことで、辞書にキーを'key2'、その値を2とする要素が追加される。
既存のキーの値を上書きする例を以下に示す。
d['key1'] = 10
print(d) # {'key0': 0, 'key1': 10, 'key2': 2}
ここでは既存のキー'key1'を指定して代入文を実行しているので、その値が上書きされている。
単一の要素を追加したり、値を上書きするのであれば代入文で十分だが、複数の要素を一括して追加したり、複数の要素の値を上書きしたりしたいのであればupdateメソッドを使うとよい。
updateメソッドには幾つかの使い方がある。ここではupdateメソッドを呼び出す辞書をdとして表記する。
d.update({キーx: 値x, キーy: 値y, ……})
d.update([(キーx, 値x), (キーy, 値y), ……])
d.update(キーx=値x, キーy=値y, ……)
1つ目の使い方は引数に辞書を渡すもの。このとき、辞書dに存在しないキーが引数に指定した辞書にあれば、そのキーと値が追加されるし、辞書dと引数に指定した辞書とで同じキーがあれば、辞書dの値は上書きされる。これは他の2つの呼び出し方でも同様だ。
2つ目の使い方は、キーとその値の組からなる反復可能オブジェクト(リストやタプルなど)を要素とする反復可能オブジェクトをupdateメソッドに渡すものだ。3つ目の使い方はキーワード引数を指定するものだ。
以下に例を示す。言葉で説明すると分かりにくいがコードで見ればすぐに分かるはずだ。
d = {'key0': 0, 'key1': 1, 'key2': 2}
d.update({'key1': 11, 'key3': 3})
print(d) # {'key0': 0, 'key1': 11, 'key2': 2, 'key3': 3}
d.update([('key1', 1), ('key3', 33)]) # 反復可能オブジェクト
print(d) # {'key0': 0, 'key1': 1, 'key2': 2, 'key3': 33}
d.update(key2=22, key4=4) # キーワード引数を使う場合
print(d) # {'key0': 0, 'key1': 1, 'key2': 22, 'key3': 33, 'key4': 4}
Python 3.9以降では累算代入演算子「|=」も使える。「|=」の右辺には辞書または[(キーx, 値x), (キーy, 値y), ……]のような(キーと値を要素とする反復可能オブジェクトを要素とする)反復可能オブジェクトを指定できる。
以下に例を示す。この場合も追加と上書きのどちらになるかは元の辞書と右辺の値による。
d2 = {'key4': 44, 'key5': 5}
d |= d2
print(d) # {'key0': 0, 'key1': 1, 'key2': 22, 'key3': 33, 'key4': 44, 'key5': 5}
Copyright© Digital Advantage Corp. All Rights Reserved.