Dictionnaires
Introduction
Avec une liste, on accède à un élément par sa position : notes[2]. Mais
souvent, on n'a pas de position naturelle — on veut retrouver une valeur à
partir d'une étiquette. Combien de roues a un vélo ? Quel est le
téléphone de Camille ? Quelle est la latitude associée à Paris ?
Pour ces situations, Python propose le dictionnaire (type dict) : une
collection de paires clé → valeur, dans laquelle on retrouve une valeur
en présentant sa clé. C'est l'analogue informatique du dictionnaire de
langue : la clé est le mot, la valeur est sa définition.
Voir .
Créer un dictionnaire
Un dictionnaire s'écrit entre accolades, chaque entrée sous la forme
clé: valeur, séparées par des virgules.
roues = {"voiture": 4, "vélo": 2, "tricycle": 3, "moto": 2}
print(roues)
# Sortie : {'voiture': 4, 'vélo': 2, 'tricycle': 3, 'moto': 2}
print(type(roues)) # <class 'dict'>
print(len(roues)) # 4
Le dictionnaire vide se note {}.
Lire une valeur — accès par clé
On utilise les crochets avec la clé entre guillemets (si c'est une chaîne).
roues = {"voiture": 4, "vélo": 2, "tricycle": 3, "moto": 2}
print(roues["voiture"]) # 4
print(roues["vélo"]) # 2
KeyError :print(roues["camion"])
# KeyError: 'camion'
"camion" in roues # True ou False — test d'appartenance
roues.get("camion", 0) # renvoie 0 si la clé est absente, pas d'erreur
::self-eval-qcm{slug="dictionnaires-c1" correct="1" explanation="La clé \\"b\\" est bien présente et lui est associée la valeur 2."}
#question
Avec d = {\"a\": 1, \"b\": 2, \"c\": 3}, que vaut d[\"b\"] ?
#choices
- 1
- 2
- 3
- KeyError ::
dict vs list — accès par clé vs par index
C'est la distinction essentielle à comprendre :
list | dict | |
|---|---|---|
| Délimiteurs | [ ] | { } |
| On accède par | un index entier : t[0] | une clé : d["voiture"] |
| Ordre des éléments | significatif (positions) | conservé d'insertion mais sans signification logique |
| Quand l'utiliser | les éléments sont ordonnés ou anonymes | les éléments ont une étiquette parlante |
Exemple parlant — un carnet d'adresses :
# Avec une liste, il faudrait connaître l'ordre des entrées
contacts_liste = ["0612345678", "0698765432", "0611112222"]
# qui a quel numéro ?
# Avec un dictionnaire, la clé porte l'information
contacts = {"Camille": "0612345678",
"Dominique": "0698765432",
"Alex": "0611112222"}
print(contacts["Camille"]) # 0612345678
Ajouter, modifier, supprimer une entrée
Ajouter ou modifier
L'écriture est la même pour les deux opérations : dico[clé] = valeur.
Python ajoute l'entrée si la clé est nouvelle, ou écrase la valeur si la clé
existe déjà.
roues = {"voiture": 4, "vélo": 2}
# Ajouter
roues["tricycle"] = 3
print(roues) # {'voiture': 4, 'vélo': 2, 'tricycle': 3}
# Modifier
roues["voiture"] = 6 # une voiture de course à 6 roues, par exemple
print(roues) # {'voiture': 6, 'vélo': 2, 'tricycle': 3}
Supprimer
del roues["vélo"]
print(roues) # {'voiture': 6, 'tricycle': 3}
::self-eval-qcm{slug="dictionnaires-c2" correct="1" explanation="On ajoute y → 2, puis on remplace la valeur de x (qui passe de 1 à 10). Résultat : {\"x\": 10, \"y\": 2}."}
#question
Que contient d après d = {"x": 1} puis d["y"] = 2 puis d["x"] = 10 ?
#choices
- {"x": 1, "y": 2}
- {"x": 10, "y": 2}
- {"y": 2}
- {"x": 10} ::
Parcourir un dictionnaire — keys, values, items
Trois méthodes essentielles permettent de parcourir un dictionnaire dans une
boucle for.
keys() — toutes les clés
roues = {"voiture": 4, "vélo": 2, "tricycle": 3}
for cle in roues.keys():
print(cle)
# Sortie :
# voiture
# vélo
# tricycle
for cle in roues: (sans .keys()) fait exactement la même chose — le
parcours par défaut d'un dictionnaire itère sur ses clés. Les deux formes
sont équivalentes ; .keys() rend l'intention plus explicite.values() — toutes les valeurs
for v in roues.values():
print(v)
# Sortie :
# 4
# 2
# 3
items() — couples (clé, valeur)
C'est la forme la plus utile : à chaque tour de boucle, on récupère un
tuple (clé, valeur) qu'on peut déballer en deux variables.
for cle, valeur in roues.items():
print(f"{cle} → {valeur} roues")
# Sortie :
# voiture → 4 roues
# vélo → 2 roues
# tricycle → 3 roues
Application — les données EXIF d'une photo
Le BO suggère l'exemple des données EXIF d'une image (date, modèle d'appareil, orientation, etc.) comme cas d'usage typique du dictionnaire. Chaque champ EXIF est en effet une paire étiquette → valeur.
exif = {
"modele": "iPhone 13",
"date": "2026-05-14",
"orientation": "paysage",
"largeur": 4032,
"hauteur": 3024,
}
print(exif["modele"]) # iPhone 13
print(exif["largeur"]) # 4032
for champ, valeur in exif.items():
print(f"{champ}: {valeur}")
Pièges courants
- Accès à une clé absente : lève
KeyError. Utiliserclé in dicopour tester, oudico.get(clé, défaut)pour fournir une valeur de repli. - Confondre
[ ],( ),{ }: crochets = liste, parenthèses = tuple, accolades = dictionnaire. - Vouloir indexer un dictionnaire par 0, 1, 2… : un dictionnaire ne se parcourt pas par position. Si vous avez besoin d'un ordre numérique, c'est une liste qu'il vous faut.
Vérification de compréhension
Quelle méthode renvoie des couples (clé, valeur) pour parcourir un dictionnaire ?