Believemy logo purple

Les dictionnaires en Python

Un dictionnaire est une table d'association dans laquelle chaque clé unique pointe vers une valeur.
Believemy logo

Les dictionnaires sont l’un des types les plus puissants et flexibles de Python.

Utilisés pour stocker des paires clé-valeur, ils permettent d’organiser des données de manière claire, efficace et rapide à consulter.

Ils sont omniprésents dans la programmation Python : configurations, résultats d’API, comptages, structures JSON, etc.

 

Syntaxe d'un dictionnaire

Comme nous l'avons vu, un dictionnaire Python est une collection non ordonnée, mutable et indexée par des clés uniques.

Sa syntaxe est très simple :

PYTHON
mon_dict = {
    "nom": "Alice",
    "age": 30,
    "ville": "Paris"
}

Ici :

  • "nom", "age", "ville" sont des clés (keys 🇺🇸) ;
  • "Alice", 30, "Paris" sont les valeurs (values 🇺🇸).

Contrairement aux listes, les éléments sont accédés par leur clé, pas leur position.

 

Créer un dictionnaire

Il existe deux méthodes pour créer un dictionnaire.

Méthode #1 : avec les accolades

La première méthode qui permet de créer une dictionnaire est avec les accolades {}.

PYTHON
utilisateur = {"id": 101, "pseudo": "magicien", "abonne": True}

 

Méthode #2 : avec la méthode dict()

Enfin une seconde façon permettant de créer un dictionnaire est avec l'utilisation de la méthode dict().

PYTHON
utilisateur = dict(id=101, pseudo="magicien", abonne=True)

Le constructeur dict() est pratique mais n'accepte que des noms de clé valides en tant qu'identifiants Python (pas d'espaces ou de tirets).

 

Accéder à une valeur dans un dictionnaire

Accéder à une valeur est très simple dans un dictionnaire avec Python : il suffit d'utiliser leurs clés.

PYTHON
utilisateur = {"pseudo": "hugo"}
print(utilisateur["pseudo"])  # hugo

Si nous tentons d'accéder à une clé qui n'existe pas, une erreur sera provoquée.

PYTHON
print(utilisateur["email"])  # ❌ KeyError

Pour éviter ceci, il est possible d'utiliser la méthode get() qui permet d'éviter une erreur si la clé est manquante (très utile pour les données qui viennent des APIs).

PYTHON
print(utilisateur.get("email"))         # None
print(utilisateur.get("email", "N/A"))  # N/A

Ici, "N/A" est affiché uniquement si la clé email n'existe pas.

 

Ajouter ou modifier une valeur

L’ajout ou la mise à jour d’un élément dans un dictionnaire se fait avec une assignation directe :

PYTHON
profil = {"pseudo": "arthur"}
profil["email"] = "arthur@example.com"  # Ajout
profil["pseudo"] = "arthur42"           # Modification

Facile, non ? 😬

Si la clé n’existe pas, elle est créée. Si elle existe, sa valeur est écrasée.

 

Ajouter plusieurs éléments d'un coup

Envie d'ajouter plusieurs éléments d'un seul coup ? Il est possible d'utiliser update().

PYTHON
profil.update({"age": 29, "pays": "France"})

 

Supprimer une valeur

Pour supprimer un élément d'un dictionnaire, nous pouvons utiliser une des trois méthodes disponibles avec le langage Python : del, pop() et pop(key, default).

Méthode #1 : del

PYTHON
del profil["email"]

Cette première méthode lève une erreur si la clé n'existe pas (KeyError).

 

Méthode #2 : pop()

Cette seconde méthode permet de supprimer une valeur sans lever d'erreur si l'élément n'existe pas.

PYTHON
pseudo = profil.pop("pseudo")  # Supprime et retourne la valeur

 

Méthode #3 : pop(key, default)

Enfin cette dernière méthode reprend la méthode deux en ajoutant une subtilité : la possibilité de définir une valeur par défaut pour éviter tout plantage.

PYTHON
profil.pop("non_existant", "rien")  # Ne lève pas d'erreur

 

Supprimer tous les éléments d'un dictionnaire en Python

Pour supprimer tous les éléments dans un dictionnaire, il est possible d'utiliser la méthode clear().

PYTHON
profil.clear()

 

Parcourir un dictionnaire

Parcourir les clés

PYTHON
profil = {"pseudo": "arthur"}

for cle in profil.keys():
    print(cle) # pseudo

Il est aussi possible d'éviter d'expliciter "keys()" mais il s'agit d'une bonne pratique à garder pour éviter tout problème de confusion.

PYTHON
for cle in profil:
    print(cle) # Meme resultat ici

 

Parcourir les valeurs

PYTHON
profil = {"pseudo": "arthur"}

for valeur in profil.values():
    print(valeur) # arthur

 

Parcourir les paires clé/valeur

PYTHON
profil = {"pseudo": "arthur"}

for cle, valeur in profil.items():
    print(f"{cle} : {valeur}") # pseudo : arthur

items() est indispensable quand vous avez besoin à la fois de la clé et de la valeur.

 

Vérifier la présence d'une clé dans un dictionnaire

Avant d’accéder à une valeur, on peut tester si une clé existe dans le dictionnaire à l’aide de l’opérateur in :

PYTHON
profil = {"pseudo": "hugo", "email": "hugo@example.com"}

if "email" in profil:
    print("Adresse trouvée")

Ceci est à éviter pour empêcher une erreur d'éxecution :

PYTHON
if profil["email"]:  # Risque KeyError si la clé n'existe pas

 

Les compréhension de dictionnaire

Python permet de créer un dictionnaire en une seule ligne grâce à une compréhension de dictionnaire (dict comprehension 🇺🇸), similaire à une compréhension de liste (list comprehension 🇺🇸).

Syntaxe

PYTHON
{cle: valeur for element in iterable}

 

Exemple #1 : Créer un dictionnaire de carrés

PYTHON
carres = {x: x**2 for x in range(5)}
print(carres)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

 

Exemple #2 : Filtrer un dictionnaire existant

PYTHON
notes = {"Alice": 18, "Bob": 12, "Chloé": 8}
admis = {k: v for k, v in notes.items() if v >= 10}

La compréhension de dictionnaire est idéale pour transformer ou filtrer des données de manière concise et lisible.

 

Copier un dictionnaire

Il existe deux méthodes pour copier un dictionnaire : copy() et dict().

Méthode #1 : copy()

Cette première méthode fait une copie superficielle (c'est-à-dire du premier niveau) sur un dictionnaire. On parle de shallow copy.

PYTHON
copie = profil.copy()

Pour faire une copie profonde (avec les contenus de tous les éléments imbriqués) nous devons utiliser copy.deepcopy() :

PYTHON
import copy
copie_totale = copy.deepcopy(original)

 

Méthode #2 : dict()

Pour créer une copie d'un dictionnaire nous avons aussi la possibilité de créer ... un dictionnaire d'un dictionnaire ! 👀

PYTHON
copie = dict(profil)

 

Fusionner deux dictionnaires

Python offre plusieurs façons d’unir deux dictionnaires.

Méthode #1 : avec update()

PYTHON
a = {"nom": "Alice"}
b = {"age": 30}

a.update(b)
print(a)  # {'nom': 'Alice', 'age': 30}

Cette méthode modifie le dictionnaire a directement.

 

Méthode #2 : avec l'opérateur "|"

Depuis Python 3.9+ il est possible également d'effectuer une fusion entre plusieurs dictionnaires grâce à l'opérateur |.

PYTHON
a = {"nom": "Alice"}
b = {"age": 30}
fusion = a | b
print(fusion) # Idem

Cette méthode est différente de la première méthode avec update() car elle retourne un nouveau dictionnaire sans modifier a / b.

 

Trier un dictionnaire

Nous pouvons trier un dictionnaire grâce à ses clés ou grâce à ses valeurs.

Trier par clé

PYTHON
d = {"b": 2, "a": 1, "c": 3}
trie_clefs = dict(sorted(d.items()))

 

Trier par valeur

PYTHON
trie_valeur = dict(sorted(d.items(), key=lambda x: x[1]))

 

Méthodes utiles sur les dictionnaires

Voici un aperçu des méthodes les plus fréquemment utilisées sur les dictionnaires.

MéthodeDescription
keys()Retourne un itérable sur les clés
values()Retourne un itérable sur les valeurs
items()Retourne un itérable sur les paires clé/valeur
get(k)Retourne la valeur ou None
pop(k)Supprime et retourne la valeur
update()Ajoute ou remplace des éléments
clear()Vide le dictionnaire
copy()Fait une copie superficielle

 

Les dictionnaires imbriqués

Un dictionnaire imbriqué est un dictionnaire dont certaines valeurs sont elles-mêmes des dictionnaires.

C’est très courant pour représenter des structures de données complexes, comme du JSON ou des configurations hiérarchiques.

Exemple

PYTHON
utilisateur = {
    "nom": "Alice",
    "profil": {
        "ville": "Paris",
        "age": 30
    }
}

 

Accéder à une valeur imbriquée

PYTHON
print(utilisateur["profil"]["ville"])  # Paris

 

Modifier une valeur imbriquée

PYTHON
utilisateur["profil"]["age"] = 31

Il est possible très facilement de parcourcir un dictionnaire imbriqué grâce à plusieurs boucles.

 

Questions fréquentes sur les tableaux

Faisons un point sur les questions que se posent le plus ceux qui débutent avec les tableaux en Python !

Quelle est la différence entre dict() et {} ?

Les deux créent un dictionnaire, mais :

  • {} est plus rapide et plus lisible ;
  • dict() est utile avec des paires ou des mots-clés.

 

Quelle différence entre get() et [] ?

[] lève une erreur si la clé est absente alors que get() retourne None (ou une valeur par défaut).

 

Quelle est la meilleure façon d'apprendre Python aujourd'hui ?

Avec notre formation dédiée à Python dans sa dernière version. 💫

Découvrez notre glossaire Python

Parcourez les termes et définitions les plus couramment utilisés dans le domaine du développement avec Python.