SunuLab
Notre savoir
CoursIntermédiaire12 min de lecture

Dictionnaires et ensembles

Associer une valeur à une clé, compter des occurrences, et éliminer les doublons

§1.Quand un index numérique ne suffit plus

Une liste range des valeurs par POSITION : notes[0], notes[1]. C'est parfait quand l'ordre est ce qui compte, et inutilisable quand on veut retrouver une information par son NOM.

Pour stocker les notes d'élèves identifiés par leur prénom, il te faudrait deux listes parallèles — une pour les prénoms, une pour les notes — et prier pour qu'elles restent alignées. Le premier tri casse tout.

Un DICTIONNAIRE règle ça : chaque valeur est rangée sous une CLÉ de ton choix. Comme dans un vrai dictionnaire, où l'on cherche un mot pour obtenir sa définition.

Créer et interroger un dictionnaire
python
notes = {"Awa": 15, "Moussa": 12, "Fatou": 17}
print(notes["Awa"])
print(len(notes))
print("Moussa" in notes)
print("Ibrahima" in notes)
Résultat : 15 3 True False

Les accolades créent le dictionnaire, les crochets accèdent à une valeur — comme pour une liste, sauf qu'on met une clé au lieu d'un numéro. L'opérateur in teste la présence d'une CLÉ, jamais d'une valeur.

Ajouter, modifier, supprimer
python
notes = {"Awa": 15}
notes["Moussa"] = 12 # ajoute une nouvelle clé
notes["Awa"] = 16 # modifie une clé existante
print(notes["Awa"], notes["Moussa"])
del notes["Moussa"]
print(len(notes))
Résultat : 16 12 1

La même écriture sert à créer et à modifier : si la clé existe, la valeur est remplacée ; sinon, la paire est ajoutée. Il n'y a pas de méthode append pour un dictionnaire.

§5.Les méthodes essentielles

.get(cle, defaut)
Renvoie la valeur si la clé existe, sinon le défaut — sans jamais lever d'erreur. Sans second argument, le défaut est None.
.keys() / .values()
Donnent respectivement toutes les clés et toutes les valeurs.
.items()
Donne les couples (clé, valeur). C'est la méthode qu'on emploie pour parcourir un dictionnaire entier.
del d[cle]
Supprime une paire. Lève une KeyError si la clé n'existe pas.
Parcourir un dictionnaire
python
notes = {"Awa": 15, "Moussa": 12, "Fatou": 17}
for prenom, note in sorted(notes.items()):
print(prenom, ":", note)
print("Moyenne :", round(sum(notes.values()) / len(notes), 2))
Résultat : Awa : 15 Fatou : 17 Moussa : 12 Moyenne : 14.67

items() donne les deux à la fois, qu'on récupère en une ligne — la même écriture que enumerate. Ici on passe par sorted() pour garantir l'ordre alphabétique, ce qui est aussi une bonne habitude pour un affichage prévisible.

§8.Le comptage : l'usage numéro un

Compter les occurrences de quelque chose — des mots dans un texte, des votes, des lettres — est le cas d'usage le plus fréquent des dictionnaires, et l'un des plus utiles en pratique.

La clé est l'élément à compter, la valeur son compteur. Toute la difficulté serait de gérer la première rencontre d'un élément, quand le compteur n'existe pas encore. C'est exactement le problème que .get() élimine.

Compter des mots
python
phrase = "le chat mange le poisson et le chat dort"
compte = {}
for mot in phrase.split():
compte[mot] = compte.get(mot, 0) + 1
for mot, n in sorted(compte.items()):
print(mot, n)
Résultat : chat 2 dort 1 et 1 le 3 mange 1 poisson 1

La ligne centrale mérite d'être relue : « la nouvelle valeur est l'ancienne, ou 0 si elle n'existait pas, plus un ». Sans .get(), il faudrait un if pour distinguer la première rencontre — trois lignes au lieu d'une.

Compte ce que tu veux
Chargement de l'éditeur Python…

§11.Les ensembles : quand seule l'appartenance compte

Un ENSEMBLE (set) est une collection sans ordre et SANS DOUBLON. On ne peut pas y accéder par index — il ne répond qu'à une question : « est-ce que cet élément est là ? ».

C'est exactement l'outil qu'il faut pour éliminer des répétitions, ou pour comparer deux collections.

Éliminer les doublons et comparer
python
nombres = [1, 2, 2, 3, 3, 3, 4]
uniques = set(nombres)
print(sorted(uniques))
print(len(uniques), "valeurs distinctes sur", len(nombres))
a = {1, 2, 3}
b = {2, 3, 4}
print(sorted(a & b)) # dans les deux
print(sorted(a | b)) # dans l'un ou l'autre
print(sorted(a - b)) # dans a mais pas dans b
Résultat : [1, 2, 3, 4] 4 valeurs distinctes sur 7 [2, 3] [1, 2, 3, 4] [1]

Les opérateurs &, | et - reprennent exactement les notations mathématiques de l'intersection, de l'union et de la différence. Comme un ensemble n'a pas d'ordre, on passe par sorted() pour un affichage stable.

§13.Choisir la bonne structure

BesoinStructurePourquoi
Garder l'ordre, accepter les doublonsListeIndexable, ordonnée, modifiable
Retrouver par un nom, une identitéDictionnaireAccès direct par clé
Compter des occurrencesDictionnaireClé = élément, valeur = compteur
Éliminer les doublonsEnsembleAucune répétition possible
Tester l'appartenance très souventEnsemble ou dictionnaireRecherche quasi instantanée

Chercher un élément dans une liste oblige à la parcourir ; dans un ensemble ou un dictionnaire, la réponse est immédiate quelle que soit la taille.

Un annuaire
Chargement de l'éditeur Python…

À retenir

  • Un dictionnaire associe une VALEUR à une CLÉ : d[cle] pour lire, d[cle] = v pour écrire ou créer.
  • d[cle] lève une KeyError si la clé manque ; d.get(cle, defaut) ne plante jamais.
  • d.items() donne les couples (clé, valeur) — la façon standard de parcourir.
  • Le comptage tient en une ligne : compte[x] = compte.get(x, 0) + 1.
  • Dans cet atelier, l'ordre des clés n'est pas garanti : trie explicitement avec sorted().
  • Un ensemble n'a ni ordre ni doublon ; &, | et - donnent intersection, union et différence.
  • Seules les valeurs immuables peuvent être des clés — jamais une liste.
Mots-clésdictionnairedictclévaleurgetitemssetensemblecomptage