Prépa Python

Basique — chapitre 16 sur 54

Les dictionnaires

Paires clé-valeur et méthodes associées

60 min11 évaluations

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 {}.

python
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) :

python
print(personne["nom"])
print(personne["age"])

Caractéristiques clés :

  1. Collection de paires clé/valeur.
  2. Modifiable (mutable).
  3. Clés uniques : une clé existe en un seul exemplaire.
  4. Clés immuables : chaînes, nombres, tuples… mais pas listes ni dicts.
  5. Ordonné depuis Python 3.7 : l'ordre d'insertion est conservé.

Créer un dictionnaire vide

python
d1 = {}
d2 = dict()
print(d1, d2)

Types de clés autorisés

python
# 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)
python
# ❌ Clés listes : impossible (mutables)
d = {[1, 2]: "valeur"}

Accéder aux valeurs

Accès par crochets

python
personne = {"nom": "Alice", "age": 30}
print(personne["nom"])

Si la clé n'existe pas : KeyError.

python
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.

python
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 :

python
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
python
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).

python
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)      # True

Pour 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)
python
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
python
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)

python
personne = {"nom": "Alice", "age": 30, "ville": "Paris"}

for cle in personne:              # équivaut à for cle in personne.keys()
    print(cle)

Parcourir les valeurs

python
for valeur in personne.values():
    print(valeur)

Parcourir les paires (recommandé)

C'est la façon la plus courante et la plus utile :

python
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.

python
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

quiz 01.07.q1réponse unique
Que renvoie d["x"] si d = {"a": 1, "b": 2} ?
quiz 01.07.q2réponse unique
Quelle clé est INVALIDE ?
quiz 01.07.q3réponse unique
Que s'affiche-t-il ?
d = {"a": 1, "b": 2}
d["a"] = 10
d["c"] = 3
print(d)
quiz 01.07.q4réponse unique
Quelle méthode renvoie la liste des valeurs d'un dictionnaire ?
quiz 01.07.q5réponse unique
Que teste "Alice" in {"nom": "Alice"} ?
quiz 01.07.q6réponse unique
Que s'affiche-t-il ?
d = {"a": 1, "b": 2}
for k, v in d.items():
    print(k, "→", v)
quiz 01.07.q7réponse unique
Que vaut len(d) pour d = {"a": 1, "b": 2, "c": [3, 4, 5]} ?
quiz 01.07.q8réponse unique
Que s'affiche-t-il ?
d = {"a": 1}
d.update({"a": 10, "b": 2})
print(d)

exercice 01.07.x1à faire

Le dictionnaire personne représente une personne, avec les clés nom, age et ville. Effectuez successivement :

  1. Affichez la ville (seule, ou précédée d'un libellé : Paris ou Ville : Paris).
  2. Ajoutez une clé email, de valeur "alice@example.com".
  3. Modifiez l'âge pour l'incrémenter de 1.
  4. Supprimez la ville.
  5. Affichez toutes les paires clé-valeur, une par ligne, sous la forme clé : valeur — par exemple nom : Alice.

Votre code doit fonctionner pour n'importe quelle personne : la vérification le rejoue avec d'autres valeurs dans personne.


exercice 01.07.x2à faire

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}.


exercice 01.07.x3à faire

À 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"}.


À retenir