Menu
Français

Dictionnaires Python : créer, accéder, mettre à jour et itérer un dict

Les dictionnaires sont la structure de recherche clé-valeur de Python — le type de données que tu utiliseras sans arrêt une fois passées les bases.

Un dictionnaire est une table de correspondance

Les listes sont indexées par position. Les dictionnaires sont indexés par clé — généralement une chaîne ou un nombre — et chaque clé correspond à une valeur. Ce seul changement ouvre une énorme catégorie de programmes : inventaires, configs, payloads JSON, profils utilisateurs, caches.

main.py
Output
Click Run to see the output here.

Les clés et les valeurs peuvent être à peu près n'importe quoi. Les clés doivent être hashables (donc : nombres, chaînes, tuples ; pas listes ni autres dicts). Les valeurs n'ont aucune restriction — un dict peut contenir n'importe quoi, y compris d'autres dicts ou listes.

Créer des dictionnaires

Plusieurs façons, chacune avec sa place :

main.py
Output
Click Run to see the output here.

Lire des valeurs

Deux façons, et le choix compte :

main.py
Output
Click Run to see the output here.

Choisis selon l'intention :

  • Utilise [] quand la clé doit être là. Si elle n'y est pas, c'est un bug et tu veux l'erreur bruyante.
  • Utilise .get() quand « pas présent » est un cas valide. Ça te permet d'écrire des valeurs par défaut sans try/except.

Ajouter, mettre à jour, supprimer

Affecter une clé la crée ou la met à jour :

main.py
Output
Click Run to see the output here.

update() fusionne un autre dict ou un itérable de paires :

main.py
Output
Click Run to see the output here.

Les clés partagées dans overrides écrasent celles de settings.

Vérifier une clé

in vérifie les clés, pas les valeurs :

main.py
Output
Click Run to see the output here.

Pour vérifier spécifiquement les valeurs, utilise user.values() :

main.py
Output
Click Run to see the output here.

Comment itérer un dictionnaire

Tu as trois vues sur lesquelles boucler :

main.py
Output
Click Run to see the output here.

.items() est ce que tu utiliseras la plupart du temps — ça te donne la paire, déballée, prête à l'emploi.

L'ordre d'itération en Python moderne (3.7+) correspond à l'ordre d'insertion. Un dict n'est pas un « sac magique » — si tu ajoutes a puis b puis c, l'itération te les renvoie dans cet ordre. C'est une garantie du langage sur laquelle tu peux compter.

Comment trier un dictionnaire

Les dictionnaires préservent l'ordre d'insertion, donc « trier » un dict veut vraiment dire construire un nouveau dict dont les clés sont insérées dans l'ordre voulu :

main.py
Output
Click Run to see the output here.

sorted() renvoie une liste de paires ; l'envelopper dans dict(...) reconstruit un dictionnaire avec le nouvel ordre. Si tu n'as besoin que des paires triées (pas d'un dict), saute l'appel externe à dict().

Comment fusionner deux dictionnaires

Python 3.9+ te donne l'opérateur | :

main.py
Output
Click Run to see the output here.

Les valeurs du dict de droite gagnent en cas de collision de clés. .update() est l'équivalent sur place. Sur les anciennes versions de Python, utilise {**defaults, **overrides}.

Le motif setdefault

Un besoin courant : « si la clé est là, utilise sa valeur ; sinon, mets un défaut puis utilise-le. »

main.py
Output
Click Run to see the output here.

Ou, mieux, utilise collections.Counter :

main.py
Output
Click Run to see the output here.

Counter est une sous-classe de dict qui compte par défaut. C'est le bon choix dès que tu comptes des occurrences.

Compréhensions de dictionnaire

Parallèle aux compréhensions de liste, mais pour construire des dicts :

main.py
Output
Click Run to see the output here.

Mêmes règles que les compréhensions de liste, mais avec key: value entre les accolades.

Le dict, jumeau de JSON

Les dicts Python correspondent presque exactement aux objets JSON. Convertir entre les deux est un seul appel :

main.py
Output
Click Run to see the output here.

C'est pourquoi les dicts apparaissent partout dans le travail web — tes requêtes et réponses d'API sont essentiellement de la manipulation de dict avec un peu de réseau entre les deux.

Un exemple pratique

Un petit programme de type config qui suit un profil utilisateur :

main.py
Output
Click Run to see the output here.

Dicts imbriqués, valeurs mutables, .get() avec un défaut — l'outillage de base pour toute donnée en forme d'enregistrement.

On avance

Listes, tuples, sets, dicts. Avec ces quatre collections en main, tu peux modéliser presque toute donnée que tu rencontreras au début. Ensuite, on apprendra la compréhension de liste — la façon compacte de Python de transformer une collection en une autre.

Questions fréquentes

Qu'est-ce qu'un dictionnaire en Python ?

Un dictionnaire est une collection de paires clé-valeur. Tu cherches une valeur par sa clé — prices['apple'] au lieu de prices[0]. Les dictionnaires sont rapides à lire et à écrire, les clés doivent être uniques, et en Python moderne ils préservent l'ordre dans lequel tu as inséré les éléments.

Comment ajouter une clé à un dictionnaire Python ?

Affecte-lui une valeur : my_dict['new_key'] = 'new value'. Si la clé existe déjà, la valeur est écrasée. Sinon, elle est ajoutée. Il n'y a pas de distinction entre « insérer » et « mettre à jour » — c'est la même syntaxe.

Quelle est la différence entre dict[key] et dict.get(key) ?

dict[key] lève KeyError si la clé n'est pas là. dict.get(key) renvoie None (ou une valeur par défaut que tu fournis) à la place. Utilise .get() quand les clés absentes sont attendues et normales ; utilise [key] quand une clé absente est un bug.

Apprendre à coder avec Coddy

COMMENCER