Les dictionnaires (dict) sont la deuxième structure fondamentale de Python après les listes. Là où une liste associe des indices (0, 1, 2…) à des valeurs, un dictionnaire associe des clés (souvent des chaînes) à des valeurs. C'est l'outil parfait pour représenter des données structurées : une personne, un produit, une configuration...
Qu'est-ce qu'un dictionnaire ?
Un dictionnaire est une collection de paires clé: valeur. On le crée avec des accolades {}.
personne = {
"nom": "Alice",
"age": 30,
"ville": "Paris",
}
print(personne)On accède aux valeurs par leur clé, entre crochets (comme pour une liste, mais avec la clé au lieu de l'indice) :
print(personne["nom"])
print(personne["age"])Caractéristiques clés :
- Collection de paires clé/valeur.
- Modifiable (mutable).
- Clés uniques : une clé existe en un seul exemplaire.
- Clés immuables : chaînes, nombres, tuples… mais pas listes ni dicts.
- Ordonné depuis Python 3.7 : l'ordre d'insertion est conservé.
Créer un dictionnaire vide
d1 = {}
d2 = dict()
print(d1, d2)Types de clés autorisés
# Clés chaînes (le plus courant)
d1 = {"a": 1, "b": 2}
# Clés entières
d2 = {1: "un", 2: "deux"}
# Clés tuples (si vous voulez des clés composites)
d3 = {("Alice", "Maths"): 15, ("Alice", "Physique"): 14}
# Mélange
d4 = {"nom": "Alice", 1: "un", (0, 0): "origine"}
print(d1)
print(d2)
print(d3)
print(d4)# ❌ Clés listes : impossible (mutables)
d = {[1, 2]: "valeur"}Accéder aux valeurs
Accès par crochets
personne = {"nom": "Alice", "age": 30}
print(personne["nom"])Si la clé n'existe pas : KeyError.
personne = {"nom": "Alice"}
print(personne["adresse"])Accès sûr avec get()
La méthode get() renvoie None (ou une valeur par défaut) si la clé n'existe pas, sans erreur.
personne = {"nom": "Alice"}
print(personne.get("nom")) # "Alice"
print(personne.get("adresse")) # None
print(personne.get("adresse", "inconnue")) # "inconnue" (valeur par défaut)Ajouter, modifier, supprimer
Ajouter ou modifier
L'affectation sert à la fois à ajouter et à modifier :
personne = {"nom": "Alice", "age": 30}
# Ajouter une nouvelle clé
personne["ville"] = "Paris"
# Modifier une clé existante (même syntaxe)
personne["age"] = 31
print(personne)Supprimer
| Méthode | Effet |
|---|---|
del d[cle] |
Supprime la clé (lève KeyError si absente) |
d.pop(cle) |
Supprime et renvoie la valeur |
d.pop(cle, default) |
Idem, sans erreur si absent (renvoie default) |
d.clear() |
Vide tout le dictionnaire |
personne = {"nom": "Alice", "age": 30, "ville": "Paris"}
del personne["age"]
print(personne)
valeur = personne.pop("ville")
print("Retirée :", valeur)
print("Reste :", personne)
personne.clear()
print(personne)Tester l'appartenance avec in
L'opérateur in teste la présence d'une clé (pas d'une valeur).
personne = {"nom": "Alice", "age": 30}
print("nom" in personne) # True
print("Alice" in personne) # False ! "Alice" est une valeur, pas une clé
print("age" in personne) # TruePour tester une valeur : valeur in d.values() (vu plus bas).
Méthodes principales
Parcourir les clés, valeurs ou paires
| Méthode | Renvoie |
|---|---|
d.keys() |
Vue sur les clés |
d.values() |
Vue sur les valeurs |
d.items() |
Vue sur les paires (clé, valeur) (tuples) |
personne = {"nom": "Alice", "age": 30, "ville": "Paris"}
print("Clés :", list(personne.keys()))
print("Valeurs :", list(personne.values()))
print("Items :", list(personne.items()))Autres méthodes utiles
| Méthode | Effet |
|---|---|
d.update(autre_dict) |
Fusionne un autre dict (écrase les clés existantes) |
d.setdefault(cle, val) |
Renvoie d[cle] si existe, sinon crée avec val |
len(d) |
Nombre de paires |
personne = {"nom": "Alice", "age": 30}
# update : fusion
personne.update({"ville": "Paris", "age": 31}) # "age" écrasé
print(personne)
# setdefault : crée si absent, sinon renvoie l'existant
couleur = personne.setdefault("couleur", "bleu")
print("Couleur ajoutée :", couleur)
print(personne)
# Si on refait setdefault avec une clé déjà là : pas d'écrasement
couleur = personne.setdefault("couleur", "rouge")
print("Couleur inchangée :", couleur)Parcourir un dictionnaire
Il y a plusieurs façons de parcourir un dictionnaire, chacune avec son usage.
Parcourir les clés (comportement par défaut)
personne = {"nom": "Alice", "age": 30, "ville": "Paris"}
for cle in personne: # équivaut à for cle in personne.keys()
print(cle)Parcourir les valeurs
for valeur in personne.values():
print(valeur)Parcourir les paires (recommandé)
C'est la façon la plus courante et la plus utile :
for cle, valeur in personne.items():
print(f"{cle} → {valeur}")Dictionnaires imbriqués
On peut mettre un dictionnaire à l'intérieur d'un autre. Très utile pour des données structurées hiérarchiquement.
personnes = {
"alice": {"age": 30, "ville": "Paris"},
"bob": {"age": 25, "ville": "Lyon"},
"charlie": {"age": 35, "ville": "Marseille"},
}
print(personnes["alice"])
print(personnes["alice"]["ville"])
# Ajouter une info à une personne existante
personnes["alice"]["email"] = "alice@example.com"
print(personnes["alice"])Les dictionnaires depuis Python 3.7 : ordre d'insertion conservé
Exercices
d["x"] si d = {"a": 1, "b": 2} ?
d = {"a": 1, "b": 2}
d["a"] = 10
d["c"] = 3
print(d)
"Alice" in {"nom": "Alice"} ?
d = {"a": 1, "b": 2}
for k, v in d.items():
print(k, "→", v)
len(d) pour d = {"a": 1, "b": 2, "c": [3, 4, 5]} ?
d = {"a": 1}
d.update({"a": 10, "b": 2})
print(d)
Le dictionnaire personne représente une personne, avec les clés nom, age et ville. Effectuez successivement :
- Affichez la ville (seule, ou précédée d'un libellé :
ParisouVille : Paris). - Ajoutez une clé
email, de valeur"alice@example.com". - Modifiez l'âge pour l'incrémenter de 1.
- Supprimez la ville.
- Affichez toutes les paires clé-valeur, une par ligne, sous la forme
clé : valeur— par exemplenom : Alice.
Votre code doit fonctionner pour n'importe quelle personne : la vérification le rejoue avec d'autres valeurs dans personne.
Construisez le dictionnaire occurrences, qui indique le nombre d'occurrences de chaque lettre de texte (on ignore la casse).
Exemple : pour "Banana", {"b": 1, "a": 3, "n": 2}.
À partir du dictionnaire d, construisez un nouveau dictionnaire inverse où clés et valeurs sont échangées.
Exemple : {"a": 1, "b": 2} → {1: "a", 2: "b"}.