[解決!Python]辞書の要素を削除したり追加したり変更したりするには解決!Python

辞書から要素を削除するにはdel文やclearメソッドなどを使える。また、辞書の要素を追加/上書きするには代入文やupdateメソッド、「|=」演算子を使える。これらの方法を一覧する。

» 2023年04月04日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

# 辞書の要素の削除
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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。