[解決!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」が戻り値となり、その要素が辞書から削除されていることが分かるはずだ。

辞書の要素の追加/上書き

 辞書に要素を追加したり、既存のキーの値を上書き(変更)したりするには以下の方法がある。

  • 要素の追加:辞書に存在しないキーを指定して、値を代入
  • 要素の上書き:辞書に存在するキーを指定して、値を代入

 キーが辞書に存在していれば上書き、存在していなければ追加となる。上では「代入」と書いたが、これは代入文でなくとも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}


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

解決!Python

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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