KeyError: 'key_name'

Python Erreur courante

Explication

L'erreur `KeyError: 'nom_de_cle'` se produit quand vous accédez à une **clé qui n'existe pas** dans un dictionnaire avec la notation crochets `dict["cle"]`. Contrairement à `.get()`, l'accès par crochets exige que la clé existe, sinon il lève une `KeyError`. ```python user = {"nom": "Alice", "age": 30} print(user["email"]) # la clé "email" n'existe pas # KeyError: 'email' ```

Causes courantes

- **Clé absente** ou mal orthographiée (`"e-mail"` vs `"email"`). - **Casse différente** : `"Email"` ≠ `"email"`. - **Données JSON / API** dont le champ est optionnel ou absent. - **Espace invisible** dans la clé (`"email "`). - **Accès à une clé avant de l'avoir définie**.

1. Utilisez .get() avec une valeur par défaut

email = user.get("email")            # None si absente
email = user.get("email", "—")       # valeur par défaut

2. Vérifiez la présence de la clé

if "email" in user:
    print(user["email"])

3. Gérez l'absence avec try / except

Utile quand l'absence est exceptionnelle et doit être traitée :

try:
    email = user["email"]
except KeyError:
    email = demander_email(user)

4. Dictionnaire avec valeur par défaut automatique

Pour des compteurs ou regroupements, defaultdict évite les KeyError :

from collections import defaultdict
compte = defaultdict(int)
for mot in mots:
    compte[mot] += 1   # pas besoin d'initialiser la clé

Comment prevenir cette erreur

- **Préférez `.get()`** pour les clés optionnelles ; réservez `dict["cle"]` aux clés garanties. - **Validez la structure** des données externes (JSON) avec un schéma (`pydantic`, `jsonschema`). - **Normalisez les clés** (minuscules, `strip()`) si elles viennent de l'extérieur. - Référence : [docs.python.org — dict.get](https://docs.python.org/fr/3/library/stdtypes.html#dict.get).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

Quelle différence entre `dict["cle"]` et `dict.get("cle")` ?
`dict["cle"]` lève une `KeyError` si la clé est absente ; `dict.get("cle")` renvoie `None` (ou une valeur par défaut que vous précisez). Utilisez `.get()` dès que la clé peut manquer.
Comment lister les clés réellement présentes ?
Affichez `list(mon_dict.keys())` ou `print(mon_dict)`. Cela révèle souvent une faute de frappe ou une différence de casse avec la clé recherchée.
Qu'est-ce qu'un `defaultdict` ?
Un dictionnaire de `collections` qui crée automatiquement une valeur par défaut pour toute clé absente (par exemple `0` avec `defaultdict(int)`), ce qui évite les `KeyError` dans les compteurs et regroupements.

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.