'dict' object has no attribute 'has_key'

Python Erreur courante

Explication

L'erreur `AttributeError: 'dict' object has no attribute 'has_key'` survient parce que la méthode `has_key()` existait en **Python 2** mais a été **supprimée en Python 3**. Pour tester la présence d'une clé, on utilise désormais l'opérateur `in`. ```python d = {"a": 1} if d.has_key("a"): # has_key n'existe plus en Python 3 print("présent") # AttributeError: 'dict' object has no attribute 'has_key' ```

Causes courantes

- **Du code Python 2** exécuté avec Python 3. - **Un vieux tutoriel** ou un copier-coller daté.

1. Utilisez l'opérateur in

if "a" in d:        # ✅ remplace d.has_key("a")
    print("présent")

2. Pour l'absence, not in

if "b" not in d:
    d["b"] = 0

3. Migrez le code Python 2

L'outil 2to3 convertit automatiquement ce type de syntaxe :

2to3 -w mon_script.py

Comment prevenir cette erreur

- **Testez l'appartenance avec `in`** (`cle in dict`), idiomatique et rapide. - **Vérifiez que vos sources ciblent Python 3** (Python 2 est en fin de vie depuis 2020). - Référence : [docs.python.org — dict](https://docs.python.org/fr/3/library/stdtypes.html#dict).

Besoin d'aide sur votre projet ?

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

Nous contacter

Questions frequentes

`in` est-il aussi rapide que l'ancien `has_key` ?
Oui, et même plus : `cle in dict` est une recherche par hachage en temps constant, l'idiome recommandé en Python 3.
Comment récupérer une valeur sans risque si la clé peut manquer ?
Utilisez `dict.get(cle)` (renvoie `None`) ou `dict.get(cle, defaut)` plutôt que de tester puis d'accéder.

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.