OUJOOD.COM
Convertir une liste en dictionnaire est une opération fréquente : vous récupérez des données sous forme de liste depuis une API, un fichier CSV ou une base de données, et vous avez besoin d'un accès rapide par clé plutôt que par index. Python propose plusieurs façons de faire cette conversion selon la structure de vos données de départ.
Ce cours couvre les cas les plus courants : liste de paires clé/valeur, deux listes séparées (clés et valeurs), liste simple avec index, et liste de dictionnaires à réindexer.
Cas 1 : liste de paires (tuples clé/valeur)
Si votre liste contient des tuples de deux éléments, dict() les convertit directement en dictionnaire. C'est la conversion la plus simple.
# Liste de tuples (clé, valeur) paires = [("nom", "Alice"), ("age", 30), ("ville", "Paris")] resultat = dict(paires) print(resultat) # Résultat : {'nom': 'Alice', 'age': 30, 'ville': 'Paris'} # Fonctionne aussi avec une liste de listes à deux éléments paires2 = [["Python", 1991], ["JavaScript", 1995], ["PHP", 1994]] langages = dict(paires2) print(langages) # Résultat : {'Python': 1991, 'JavaScript': 1995, 'PHP': 1994}
Cas 2 : deux listes séparées avec zip()
Quand vos clés et vos valeurs sont dans deux listes distinctes, zip() les combine en paires, et dict() les convertit.
prenoms = ["Alice", "Bob", "Claire"] scores = [88, 72, 95] # zip() combine les deux listes en paires resultat = dict(zip(prenoms, scores)) print(resultat) # Résultat : {'Alice': 88, 'Bob': 72, 'Claire': 95} # Cas pratique : en-têtes CSV + valeurs d'une ligne colonnes = ["nom", "age", "ville"] ligne = ["Alice", 30, "Paris"] enregistrement = dict(zip(colonnes, ligne)) print(enregistrement) # Résultat : {'nom': 'Alice', 'age': 30, 'ville': 'Paris'}
Cas 3 : liste simple avec enumerate() comme clés
Si vous voulez utiliser l'index de position comme clé, enumerate() génère des paires (index, valeur) que dict() convertit directement.
fruits = ["pomme", "poire", "cerise", "mangue"] # Index (0, 1, 2...) comme clés resultat = dict(enumerate(fruits)) print(resultat) # Résultat : {0: 'pomme', 1: 'poire', 2: 'cerise', 3: 'mangue'} # Démarrer la numérotation à 1 resultat2 = dict(enumerate(fruits, start=1)) print(resultat2) # Résultat : {1: 'pomme', 2: 'poire', 3: 'cerise', 4: 'mangue'}
Cas 4 : compréhension de dictionnaire
La compréhension de dictionnaire est la méthode la plus flexible. Elle permet de transformer les clés ou les valeurs en cours de construction, d'appliquer des conditions, ou de calculer des valeurs.
mots = ["python", "javascript", "php", "ruby"] # Mot → longueur du mot longueurs = {mot: len(mot) for mot in mots} print(longueurs) # Résultat : {'python': 6, 'javascript': 10, 'php': 3, 'ruby': 4} # Filtrer : garder uniquement les mots de plus de 4 lettres longs = {mot: len(mot) for mot in mots if len(mot) > 4} print(longs) # Résultat : {'python': 6, 'javascript': 10} # Nombre → son carré nombres = [1, 2, 3, 4, 5] carres = {n: n**2 for n in nombres} print(carres) # Résultat : {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Cas 5 : liste de dictionnaires → dictionnaire indexé
Cas très courant avec les données d'API : vous avez une liste de dictionnaires et vous voulez les réindexer par un champ précis pour un accès rapide par identifiant.
utilisateurs = [
{"id": 1, "nom": "Alice", "email": "alice@exemple.com"},
{"id": 2, "nom": "Bob", "email": "bob@exemple.com"},
{"id": 3, "nom": "Claire","email": "claire@exemple.com"},
]
# Réindexer par id pour un accès direct
par_id = {u["id"]: u for u in utilisateurs}
print(par_id[2])
# Résultat : {'id': 2, 'nom': 'Bob', 'email': 'bob@exemple.com'}
# Réindexer par nom
par_nom = {u["nom"]: u["email"] for u in utilisateurs}
print(par_nom["Alice"])
# Résultat : alice@exemple.com
Cas 6 : initialiser un dictionnaire avec une valeur par défaut
dict.fromkeys() crée un dictionnaire depuis une liste de clés, toutes initialisées à la même valeur.
matieres = ["maths", "physique", "histoire", "anglais"] # Toutes les matières initialisées à 0 notes = dict.fromkeys(matieres, 0) print(notes) # Résultat : {'maths': 0, 'physique': 0, 'histoire': 0, 'anglais': 0} # Sans valeur par défaut → None vide = dict.fromkeys(matieres) print(vide) # Résultat : {'maths': None, 'physique': None, 'histoire': None, 'anglais': None}
Récapitulatif des méthodes
| Données de départ | Méthode | Exemple |
|---|---|---|
| Liste de tuples (clé, val) | dict(liste) | dict([("a",1),("b",2)]) |
| Deux listes séparées | dict(zip(clés, vals)) | dict(zip(noms, scores)) |
| Liste simple → index comme clé | dict(enumerate(liste)) | dict(enumerate(fruits)) |
| Transformation personnalisée | {k: v for ...} | {m: len(m) for m in mots} |
| Liste de dicts → réindexer | {d["id"]: d for d in liste} | Accès par identifiant |
| Clés connues, valeur par défaut | dict.fromkeys(liste, val) | dict.fromkeys(matieres, 0) |
Par carabde | Mis à jour le 21 avril 2026