Python 辞書にキーが存在するかどうかを確認する方法

Python 辞書にキーが存在するかどうかを確認する方法を学びます。 in 演算子、get() メソッド、setdefault、KeyError 例外の処理を比較します。

エディターでこのソリューションを試してください

概要

ユーザー パラメーターの解析、構成のオーバーライド、API レコード、または JSON ペイロードなど、動的に入力された辞書を操作するときに、存在しないキーを使用して値を取得しようとすると、「KeyError」が発生し、アプリケーションがクラッシュします。したがって、防御チェックの実装は不可欠です。

キーが存在するかどうかを確認する最も直接的でPython的かつ最速の方法は、「in」メンバーシップ演算子「if key in my_dict:」を使用することです。この式は、キーが見つかった場合は「True」を返し、それ以外の場合は「False」を返します。内部では、Python ディクショナリはハッシュ テーブルを使用して実装されており、メンバーシップ チェックが高度に最適化され、平均時間複雑さは O(1) で実行されます。

あるいは、キーの値を取得したいが、キーが見つからない場合はデフォルト値にフォールバックしたい場合は、`.get(key,default)` メソッドを使用できます。キーが存在する場合は値を返します。そうでない場合は、`KeyError` を発生させたり、条件文を要求したりせずに、デフォルト値 (または省略された場合は `None`) を返します。

コードと実行の出力

このスクリプトは、in 演算子、get() フォールバック メソッドを使用したキーの存在の確認、および KeyError 例外の処理を示します。

user = {"id": 101, "name": "Alice", "role": "admin"}

# 1. Checking key existence using the 'in' operator (Recommended)
if "role" in user:
    print("Found 'role' key. Value is:", user["role"])

if "email" not in user:
    print("'email' key is missing.")

# 2. Retrieving value safely using get() with a fallback
email_address = user.get("email", "no-email@example.com")
print("Email address:", email_address)

# 3. Handling KeyError exception manually
try:
    invalid_lookup = user["location"]
except KeyError:
    print("Caught KeyError: 'location' key does not exist.")
端子出力
Found 'role' key. Value is: admin
'email' key is missing.
Email address: no-email@example.com
Caught KeyError: 'location' key does not exist.

段階的な実装

  • 標準のキーの存在チェックには、in 演算子 (例: if key in Dictionary:) を使用します。
  • not in 演算子を使用して、辞書構造にキーが欠落しているかどうかを確認します。
  • Dictionary.get(key,default_value) を呼び出して、デフォルトのフォールバックを提供しながら値を安全に取得します。
  • サードパーティ統合で不足しているキーを処理する場合は、直接検索を try-excel KeyError ブロックでラップします。

よくある質問

キーが辞書に存在するかどうかを確認する時間の計算量はどれくらいですか?

辞書は内部でハッシュ テーブルを使用し、サイズに関係なく検索時間を一定にするため、平均時間計算量は O(1) になります。

値が辞書に存在するかどうかを確認できますか?

はい、ただし、my_dict.values(): の値 view: if value を検索する必要があります。 Python はディクショナリ内のすべての要素を走査する必要があるため、値のチェックには O(N) 線形時間がかかることに注意してください。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。