Comment vérifier si une clé existe dans un dictionnaire Python

Découvrez comment vérifier si une clé existe dans un dictionnaire Python. Comparez l'opérateur in, la méthode get(), setdefault et la gestion des exceptions KeyError.

Essayez cette solution dans l'éditeur

Aperçu

Lors de l'interaction avec des dictionnaires remplis de manière dynamique, tels que l'analyse des paramètres utilisateur, les remplacements de configuration, les enregistrements API ou les charges utiles JSON, tenter de récupérer une valeur à l'aide d'une clé qui n'existe pas déclenchera une « KeyError » et fera planter votre application. La mise en place de contrôles défensifs est donc essentielle.

Le moyen le plus direct, pythonique et le plus rapide de vérifier si une clé existe consiste à utiliser l'opérateur d'appartenance « in » : « if key in my_dict : ». Cette expression renvoie « True » si la clé est trouvée, et « False » sinon. Sous le capot, les dictionnaires Python sont implémentés à l'aide de tables de hachage, ce qui rend les vérifications d'adhésion hautement optimisées, s'exécutant dans une complexité temporelle moyenne O(1).

Alternativement, si vous souhaitez récupérer la valeur d'une clé mais revenir à une valeur par défaut si la clé est manquante, vous pouvez utiliser la méthode `.get(key, default)`. Si la clé existe, elle renvoie la valeur ; sinon, il renvoie votre valeur par défaut (ou « None » si elle est omise) sans déclencher de « KeyError » ni nécessiter d'instructions conditionnelles.

Sortie de code et d'exécution

Ce script montre la vérification de l'existence d'une clé à l'aide de l'opérateur in, des méthodes de secours get() et la gestion des exceptions KeyError.

check_dict_keys.py
Essayez dans l'éditeur
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.")
Sortie terminale
Found 'role' key. Value is: admin
'email' key is missing.
Email address: no-email@example.com
Caught KeyError: 'location' key does not exist.

Mise en œuvre étape par étape

  • Utilisez l'opérateur in (par exemple, si la clé dans le dictionnaire :) pour les vérifications standard de l'existence des clés.
  • Utilisez l'opérateur not in pour vérifier si une clé est manquante dans une structure de dictionnaire.
  • Appelez Dictionary.get(key, default_value) pour récupérer une valeur en toute sécurité tout en fournissant une solution de secours par défaut.
  • Enveloppez les recherches directes dans des blocs try-sauf KeyError lors de la gestion des clés manquantes dans les intégrations tierces.

Foire aux questions

Quelle est la complexité temporelle de vérifier si une clé existe dans un dictionnaire ?

Il s'agit d'une complexité temporelle moyenne de O(1) car les dictionnaires utilisent des tables de hachage sous le capot, ce qui rend le temps de recherche constant quelle que soit la taille.

Puis-je vérifier si une valeur existe dans un dictionnaire ?

Oui, mais vous devez rechercher la vue des valeurs : if value in my_dict.values() :. Notez que les vérifications de valeurs prennent un temps linéaire O(N) car Python doit parcourir chaque élément du dictionnaire.

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.