'list' object has no attribute 'keys'

Python Erreur courante

Explication

L'erreur `AttributeError: 'list' object has no attribute 'keys'` survient quand vous appelez `.keys()` (une méthode de **dictionnaire**) sur une **liste**. La variable est une liste, pas un dictionnaire — souvent parce qu'un JSON a été analysé en **tableau** (`[...]`) et non en objet (`{...}`). ```python data = [{"id": 1}, {"id": 2}] # une liste de dictionnaires for cle in data.keys(): # .keys() n'existe pas sur une liste print(cle) # AttributeError: 'list' object has no attribute 'keys' ```

Causes courantes

- **La variable est une liste**, pas un dictionnaire. - **JSON analysé en tableau** : `json.loads("[...]")` renvoie une `list`. - **Confusion** entre une liste de dictionnaires et un dictionnaire. - **Retour de fonction** d'un type inattendu.

1. Parcourez directement la liste

for element in data:        # ✅ chaque élément est un dict
    print(element["id"])

2. Accédez aux clés de chaque élément

for element in data:
    for cle in element.keys():   # .keys() sur le dict, pas la liste
        print(cle)

3. Vérifiez le type réel des données

print(type(data))   # <class 'list'> ou <class 'dict'> ?

4. Si vous attendiez un dictionnaire, corrigez la source

Un JSON qui commence par [ est un tableau ; par {, un objet. Adaptez votre code à la structure réellement reçue.

Comment prevenir cette erreur

- **Inspectez la structure** des données externes (`type(...)`, `print(...)`) avant de la manipuler. - **Distinguez** liste de dictionnaires (`[{...}, {...}]`) et dictionnaire (`{...}`). - **Validez le JSON d'API** avec un schéma (`pydantic`) si la structure doit être garantie.

Besoin d'aide sur votre projet ?

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

Nous contacter

Questions frequentes

Comment savoir si mon JSON est une liste ou un dictionnaire ?
Regardez le premier caractère : `[` = liste (tableau), `{` = dictionnaire (objet). En Python, `type(data)` confirme : `list` ou `dict`.
J'ai une liste de dictionnaires, comment obtenir toutes les clés ?
Parcourez la liste puis appelez `.keys()` sur chaque élément : `for item in data: print(item.keys())`. Les clés appartiennent aux dictionnaires, pas à la liste qui les contient.

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.