このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】辞書に対する要素の追加と削除

辞書に対する要素の追加と削除

 辞書は、キーと値のペアを動的に管理できるミュータブルなデータ構造です。キーはハッシュ法によって管理されるため、指定したキーに対応する値を迅速に取得・更新・削除することが可能です。ここでは、辞書に要素を追加・更新する方法と、要素を削除する方法について、具体例と表を用いながら解説します。例として国の首都を管理する辞書を用いて説明します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.辞書の要素の追加と更新

 辞書に新たな要素を追加するには、単にキーに対して値を代入します。すでに同じキーが存在する場合は、その値が上書きされます。

1.1. キーと値の追加

まずは、空の辞書に国コードをキー、首都名を値として追加する例です。

サンプルプログラム

# 空の辞書を作成(国の首都を管理する辞書)
capitals = {}

# キー 'de'(ドイツ)に対して首都 'Berlin' を追加する
capitals['de'] = 'Berlin'
print("要素追加後の capitals:", capitals)
# 出力例: 要素追加後の capitals: {'de': 'Berlin'}

実行結果

要素追加後の capitals: {'de': 'Berlin'}

解説

  • capitals = {} により空の辞書を作成します。
  • capitals['de'] = 'Berlin' で、キー 'de' に対応する値 'Berlin' を追加します。
  • 辞書はミュータブルなため、この操作により要素が動的に追加されます。

1.2. キーの更新

 既に存在するキーに対して新たな値を代入すると、そのキーの値は上書きされます。以下の例では、キー 'de' の値を更新します。

サンプルプログラム

# 既に追加されているキー 'de' の値を更新する
capitals['de'] = 'Berlin (updated)'
print("値更新後の capitals:", capitals)
# 出力例: 値更新後の capitals: {'de': 'Berlin (updated)'}

実行結果

値更新後の capitals: {'de': 'Berlin (updated)'}

解説

  • すでに辞書に存在するキー 'de' に対して、別の値 'Berlin (updated)' を代入すると、元の値が上書きされます。
  • この動作により、最新の情報を反映することができます。

2.辞書の要素の削除

 辞書から要素を削除する方法としては、del 文や pop メソッド、さらには clear メソッドがあります。ここでは、キーによる削除の基本的な使い方について説明します。

2.1. del 文による要素の削除

 del 文を使って指定したキーの要素を削除できます。ただし、存在しないキーを指定すると KeyError が発生します。

サンプルプログラム

# 現在の capitals の状態を確認
print("削除前の capitals:", capitals)
# 出力例: 削除前の capitals: {'de': 'Berlin (updated)'}

# 存在しないキー 'fr' を削除しようとする例
try:
    del capitals['fr']
except KeyError as e:
    print("KeyError:", e)
# 出力例: KeyError: 'fr'

# 存在するキー 'de' の要素を削除する
del capitals['de']
print("削除後の capitals:", capitals)
# 出力例: 削除後の capitals: {}

実行結果

削除前の capitals: {'de': 'Berlin (updated)'}
KeyError: 'fr'
削除後の capitals: {}

解説

  • del capitals['fr'] は、辞書にキー 'fr' が存在しないため、KeyError を発生させます。
  • 逆に、del capitals['de'] はキー 'de' が存在するため、正常に削除され、結果として空の辞書となります。

2.2. pop メソッドによる要素の削除

 pop メソッドは、指定したキーの要素を削除し、その値を返します。キーが存在しない場合は、デフォルト値が指定されていなければ KeyError が発生しますが、デフォルト値を指定すればその値が返されます。

サンプルプログラム

lang = {'ja': 'Japanese', 'en': 'English'}

# 存在しないキー 'fr' を pop メソッドで削除(デフォルト値なしの場合)
try:
    value = lang.pop('fr')
except KeyError as e:
    print("pop() での KeyError:", e)
# 出力例: pop() での KeyError: 'fr'

# 存在しないキー 'fr' に対してデフォルト値 'French' を指定して pop
value = lang.pop('fr', 'French')
print("pop() のデフォルト値を指定した場合:", value)
# 出力例: pop() のデフォルト値を指定した場合: French

# lang の状態は変化していない
print("lang の状態:", lang)
# 出力例: lang の状態: {'ja': 'Japanese', 'en': 'English'}

実行結果

pop() での KeyError: 'fr'
pop() のデフォルト値を指定した場合: French
lang の状態: {'ja': 'Japanese', 'en': 'English'}

解説

  • lang.pop('fr') は、キー 'fr' が存在しないため KeyError を発生させます。
  • lang.pop('fr', 'French') は、キーが存在しない場合にデフォルト値 'French' を返すため、安全に値を取得できます。

2.3. 辞書の全要素の削除:clear メソッド

辞書に格納された全ての要素を削除するには、clear メソッドを使います。

サンプルプログラム

# lang の現在の状態を確認
print("削除前の lang:", lang)
# 出力例: 削除前の lang: {'ja': 'Japanese', 'en': 'English'}

# clear メソッドを使って全要素を削除
lang.clear()
print("clear() 実行後の lang:", lang)
# 出力例: clear() 実行後の lang: {}

実行結果

削除前の lang: {'ja': 'Japanese', 'en': 'English'}
clear() 実行後の lang: {}

解説

  • clear() メソッドは、辞書のすべてのキーと値のペアを一括で削除し、空の辞書に更新します。

まとめ

辞書はミュータブルなため、キーと値のペアを柔軟に追加・更新・削除することができます。

  • 要素の追加と更新: 辞書[キー] = 値 の形で追加または更新し、同じキーが存在する場合は上書きされます。
  • 要素の削除del 文は指定したキーの要素を削除しますが、存在しないキーを指定すると KeyError が発生します。
  • pop メソッド: 指定したキーの要素を削除し、その値を返します。デフォルト値を設定することで、存在しない場合のエラーを回避できます。
  • clear メソッド: 辞書内の全要素を一括で削除し、空の辞書にします。

 これらの操作を理解し使い分けることで、辞書を用いたデータ管理がより柔軟で堅牢なものとなり、実世界の情報のマッピングや検索が効率的に行えるようになります。