[解決!Python]辞書の要素を削除したり追加したり変更したりするには:解決!Python
辞書から要素を削除するには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文を使う(指定したキーとその値の組を削除)
- clearメソッドを使う(辞書の全要素を削除)
- popメソッド/popitemメソッドを使う
また、辞書に要素を追加したり、既存のキーの値を変更したりするには次の方法がある。
- 存在しないキーを指定して辞書に値を代入する(要素の追加)
- 既存のキーを指定して辞書に値を代入する(要素の上書き)
- updateメソッドに辞書などを指定する(要素の追加または上書き)
- 累算代入演算子「|=」を使用する
以下ではこれらについて見ていくことにする。
辞書の要素の削除
辞書の特定の要素を指定するには、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メソッドもある。これらについても簡単に触れておこう(これらについては「辞書の要素を取得するには」でも触れているので、そちらも参照されたい)。
- 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」が戻り値となり、その要素が辞書から削除されていることが分かるはずだ。
辞書の要素の追加/上書き
Copyright© Digital Advantage Corp. All Rights Reserved.