0 XP
?
Débutant40 min25 XP

Objectifs de cette leçon

  • Créer et manipuler des dictionnaires
  • Parcourir les clés et valeurs
  • Comprendre la conversion JSON

Dictionnaires 📖

Qu'est-ce qu'un dictionnaire ? 🤔

Un dictionnaire (dict) associe des cles a des valeurs. C'est comme un vrai dictionnaire : tu cherches un mot (la cle) pour trouver sa definition (la valeur).

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

config = {}

💡 Les cles doivent etre immutables (str, int, tuple, bool). Les valeurs peuvent etre n'importe quel type.


Acceder aux valeurs 🔑

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

# Acces direct
print(personne["nom"])    # "Alice"

# Acces avec .get() (evite le KeyError)
print(personne.get("email"))           # None
print(personne.get("email", "N/A"))    # "N/A"

# Verifier l'existence
print("nom" in personne)         # True
print("email" in personne)       # False
MethodeSi la cle existeSi la cle n'existe pas
dict[cle]Retourne la valeurKeyError
dict.get(cle)Retourne la valeurRetourne None
dict.get(cle, defaut)Retourne la valeurRetourne defaut

Modifier et ajouter ✏️

personne = {"nom": "Alice", "age": 25}

personne["age"] = 26
print(personne)  # {'nom': 'Alice', 'age': 26}

personne["email"] = "alice@example.com"
print(personne)  # {'nom': 'Alice', 'age': 26, 'email': 'alice@example.com'}

personne.update({"tel": "06 12 34 56 78", "ville": "Paris"})

📌 Si la cle existe deja, la valeur est ecrasee. Sinon, la paire est ajoutee.


Supprimer des elements 🗑️

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

del personne["ville"]
print(personne)  # {'nom': 'Alice', 'age': 25}

age = personne.pop("age")
print(age)        # 25

tel = personne.pop("tel", "Non renseigne")
print(tel)  # "Non renseigne"

personne.clear()
print(personne)  # {}

Parcourir un dictionnaire 🔄

capitales = {
    "France": "Paris",
    "Allemagne": "Berlin",
    "Espagne": "Madrid",
    "Italie": "Rome"
}

for pays in capitales:
    print(pays)

for capitale in capitales.values():
    print(capitale)

for pays, capitale in capitales.items():
    print(f"La capitale de {pays} est {capitale}")
MethodeRetourneType
.keys()Les clesdict_keys
.values()Les valeursdict_values
.items()Les pairesdict_items (tuples)

Comprehensions de dictionnaires ✨

noms = ["Alice", "Bob", "Charlie"]
indices = {nom: i for i, nom in enumerate(noms)}
print(indices)  # {'Alice': 0, 'Bob': 1, 'Charlie': 2}

prix_ht = {"produit_a": 100, "produit_b": 250, "produit_c": 75}
prix_ttc = {k: v * 1.20 for k, v in prix_ht.items()}
print(prix_ttc)  # {'produit_a': 120.0, 'produit_b': 300.0, 'produit_c': 90.0}

chers = {k: v for k, v in prix_ht.items() if v > 100}
print(chers)  # {'produit_b': 250}

Dictionnaires imbriques 🪆

ecole = {
    "classe_a": {
        "professeur": "M. Martin",
        "eleves": ["Alice", "Bob"],
        "salle": "101"
    },
    "classe_b": {
        "professeur": "Mme Durand",
        "eleves": ["Charlie", "Diana"],
        "salle": "202"
    }
}

print(ecole["classe_a"]["professeur"])  # "M. Martin"
print(ecole["classe_b"]["eleves"][0])   # "Charlie"

ecole["classe_a"]["eleves"].append("Eve")
print(ecole["classe_a"]["eleves"])  # ['Alice', 'Bob', 'Eve']

Le lien avec JSON 🌐

import json

personne = {"nom": "Alice", "age": 25, "hobbies": ["lecture", "code"]}
json_str = json.dumps(personne, indent=2, ensure_ascii=False)
print(json_str)

data = json.loads(json_str)
print(data["nom"])  # "Alice"
FonctionDescription
json.dumps(obj)Python → chaine JSON
json.dump(obj, f)Python → fichier JSON
json.loads(str)Chaine JSON → Python
json.load(f)Fichier JSON → Python

Operations utiles 🛠️

# Fusion avec ** (toutes versions)
defaut = {"theme": "clair", "langue": "fr"}
personnalise = {"theme": "sombre", "police": "14px"}
config = {**defaut, **personnalise}
print(config)  # {'theme': 'sombre', 'langue': 'fr', 'police': '14px'}

Patterns utiles 🧩

Compteur avec defaultdict

from collections import defaultdict

texte = "bonjour le monde le ciel est bleu le monde"
compteur = defaultdict(int)

for mot in texte.split():
    compteur[mot] += 1

print(dict(compteur))
# {'bonjour': 1, 'le': 3, 'monde': 2, 'ciel': 1, 'est': 1, 'bleu': 1}

Trier un dict par valeur

scores = {"Alice": 85, "Bob": 92, "Charlie": 78}
trier = dict(sorted(scores.items(), key=lambda item: item[1], reverse=True))
print(trier)  # {'Bob': 92, 'Alice': 85, 'Charlie': 78}

Inverser un dict

original = {"a": 1, "b": 2, "c": 3}
inverse = {v: k for k, v in original.items()}
print(inverse)  # {1: 'a', 2: 'b', 3: 'c'}

Diagramme memoire 🧠

💡 Un dictionnaire est un tableau de hachage (hash table). La recherche par cle est en O(1) — tres rapide !


Pieges a eviter ⚠️

# 1. Modifier un dict pendant l'iteration
d = {"a": 1, "b": 2, "c": 3}
for key in list(d.keys()):  # Copie de securite
    if d[key] == 2:
        del d[key]

# 2. Utiliser une cle mutable (interdit)
# d = {[1,2]: "val"}  # TypeError

# 3. Oublier .get() quand la cle peut etre absente
d.get("cle_absente")  # Retourne None

Exercice pour toi 🎯

# Exercice 1 : Compteur de lettres
def compter_lettres(texte):
    compteur = {}
    for lettre in texte.lower():
        if lettre.isalpha():
            compteur[lettre] = compteur.get(lettre, 0) + 1
    return compteur

print(compter_lettres("Bonjour"))
# {'b': 1, 'o': 2, 'n': 1, 'j': 1, 'u': 1, 'r': 1}

# Exercice 2 : Inverser un dictionnaire
def inverser_dict(d):
    return {v: k for k, v in d.items()}

# Exercice 3 : Fusionner deux dictionnaires
def fusionner(d1, d2):
    resultat = d1.copy()
    resultat.update(d2)
    return resultat

💡 Astuce : Les dictionnaires sont la structure la plus versatile de Python. Utilise-les pour des objets, des configs, des compteurs, et bien plus !

⚡ Simulateur — Dictionnaires

Étape 1/7
📝 Pseudo-code
1personne = {"nom": "Alice", "age": 25}
2print(personne["nom"])
3personne["ville"] = "Paris"
4for cle, val in personne.items():
5 print(f"{cle}: {val}")
⚙️ Exécution
📦 Mémoire
personne
{"nom": "Alice", "age": 25}
🔀 Flux d'exécution
dict créé
3
Création du dictionnaire

On crée un dictionnaire avec des paires clé-valeur entre accolches. Chaque clé est unique.