Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
Dictionnaire Python
Ce guide complet explique les dictionnaires Python — comment les créer, accéder, ajouter, supprimer des éléments et exploiter les méthodes intégrées.
Vidéo : Dictionnaires Python pour stocker des paires clé/valeur
Les dictionnaires Python sont des collections non ordonnées de paires clé/valeur. Chaque entrée associe une clé unique et immuable à une valeur qui peut être de n'importe quel type.
Créer un dictionnaire Python
Définir un dictionnaire est simple : placez des paires clé/valeur séparées par des virgules à l'intérieur d'accolades {}. Les clés doivent être immuables (chaînes, nombres, ou tuples d'éléments immuables) et uniques ; les valeurs peuvent être de n'importe quel type et peuvent se répéter.
# dictionnaire vide
my_dict = {}
# dictionnaire avec clés entières
my_dict = {1: 'pomme', 2: 'balle'}
# dictionnaire avec clés mixtes
my_dict = {'nom': 'Jean', 1: [2, 4, 3]}
# utilisant dict()
my_dict = dict({1:'pomme', 2:'balle'})
# depuis une séquence de paires
my_dict = dict([(1,'pomme'), (2,'balle')])
Toutes les approches ci-dessus créent la même structure de dictionnaire.
Accéder aux éléments d'un dictionnaire
Les valeurs des dictionnaires sont récupérées via leurs clés, soit avec des crochets [] soit avec la méthode get(). L'utilisation de crochets lève une KeyError si la clé est absente ; get() retourne None par défaut.
# get vs [] pour récupérer des éléments
my_dict = {'nom': 'Jack', 'age': 26}
# Sortie : Jack
print(my_dict['nom'])
# Sortie : 26
print(my_dict.get('age'))
# Essayer d'accéder à une clé manquante retourne None
print(my_dict.get('adresse'))
# KeyError
print(my_dict['adresse'])
Sortie
Jack 26 None Traceback (most recent call last): File "<string>", line 15, in <module> print(my_dict['adresse']) KeyError: 'adresse'
Modifier et ajouter des éléments de dictionnaire
Les dictionnaires sont mutables. Assigner à une clé existante met à jour sa valeur ; assigner à une nouvelle clé ajoute une nouvelle entrée.
# Modification et ajout d'éléments de dictionnaire
my_dict = {'nom': 'Jack', 'age': 26}
# mettre à jour la valeur
my_dict['age'] = 27
# Sortie : {'age': 27, 'nom': 'Jack'}
print(my_dict)
# ajouter un élément
my_dict['adresse'] = 'Centre-ville'
# Sortie : {'adresse': 'Centre-ville', 'age': 27, 'nom': 'Jack'}
print(my_dict)
Sortie
{'nom': 'Jack', 'age': 27} {'nom': 'Jack', 'age': 27, 'adresse': 'Centre-ville'}
Supprimer des éléments d'un dictionnaire
Utilisez pop() pour supprimer une clé spécifique et récupérer sa valeur. popitem() supprime un couple arbitraire, tandis que clear() efface tout le dictionnaire. Le mot-clé del peut supprimer des entrées individuelles ou la variable entière.
# Suppression d'éléments d'un dictionnaire
# créer un dictionnaire
carres = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# supprimer un élément particulier, retourne sa valeur
# Sortie : 16
print(carres.pop(4))
# Sortie : {1: 1, 2: 4, 3: 9, 5: 25}
print(carres)
# supprimer un élément arbitraire, retourner (clé,valeur)
# Sortie : (5, 25)
print(carres.popitem())
# Sortie : {1: 1, 2: 4, 3: 9}
print(carres)
# supprimer tous les éléments
carres.clear()
# Sortie : {}
print(carres)
# supprimer le dictionnaire lui-même
del carres
# Lève une erreur
print(carres)
Sortie
16 {1: 1, 2: 4, 3: 9, 5: 25} (5, 25) {1: 1, 2: 4, 3: 9} {} Traceback (most recent call last): File "<string>", line 30, in <module> print(carres) NameError: name 'carres' is not defined
Méthodes des dictionnaires Python
Le tableau ci-dessous liste les méthodes courantes des dictionnaires et leurs utilisations. Beaucoup sont démontrées dans les exemples qui suivent.
| Méthode | Description |
|---|---|
| clear() | Supprime tous les éléments du dictionnaire. |
| copy() | Retourne une copie superficielle du dictionnaire. |
| fromkeys(seq[, v]) | Crée un nouveau dictionnaire depuis seq avec chaque clé définie à v (défaut None). |
| get(key[,d]) | Retourne la valeur pour key ; si absente, retourne d (défaut None). |
| items() | Retourne une vue des paires (clé, valeur) du dictionnaire. |
| keys() | Retourne une vue des clés du dictionnaire. |
| pop(key[,d]) | Supprime key et retourne sa valeur ou d ; lève KeyError si key manque et d n'est pas fourni. |
| popitem() | Supprime et retourne un couple (clé, valeur) arbitraire ; lève KeyError si le dictionnaire est vide. |
| setdefault(key[,d]) | Retourne la valeur pour key ; si absente, insère key avec valeur d (défaut None) et retourne d. |
| update([other]) | Insère ou met à jour les paires clé/valeur depuis other, écrasant les clés existantes. |
| values() | Retourne une vue des valeurs du dictionnaire. |
Exemple d'utilisation :
# Méthodes de dictionnaire
notes = {}.fromkeys(['Math', 'Anglais', 'Sciences'], 0)
# Sortie : {'Anglais': 0, 'Math': 0, 'Sciences': 0}
print(notes)
for item in notes.items():
print(item)
# Sortie : ['Anglais', 'Math', 'Sciences']
print(list(sorted(notes.keys())))
Sortie
{'Math': 0, 'Anglais': 0, 'Sciences': 0} ('Math', 0) ('Anglais', 0) ('Sciences', 0) ['Anglais', 'Math', 'Sciences']
Compréhension de dictionnaire Python
La compréhension de dictionnaire offre une syntaxe concise pour construire des dictionnaires depuis des itérables. Elle suit le motif {clé: valeur for élément in itérable}.
# Compréhension de dictionnaire
carres = {x: x*x for x in range(6)}
print(carres)
Sortie
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Version impérative équivalente :
carres = {}
for x in range(6):
carres[x] = x*x
print(carres)
Sortie
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Les compréhensions peuvent inclure plusieurs boucles et des filtres if. Exemple : seulement les carrés impairs.
# Compréhension de dictionnaire avec condition if
carres_impairs = {x: x*x for x in range(11) if x % 2 == 1}
print(carres_impairs)
Sortie
{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
Pour plus sur les compréhensions de dictionnaire, voir Compréhension de dictionnaire Python.
Autres opérations sur les dictionnaires
Test d'appartenance aux dictionnaires
Utilisez l'opérateur in pour vérifier si une clé existe ; il n'inspecte pas les valeurs.
# Test d'appartenance pour les clés de dictionnaire
carres = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Sortie : True
print(1 in carres)
# Sortie : True
print(2 not in carres)
# les tests d'appartenance sont pour les clés seulement, pas les valeurs
# Sortie : False
print(49 in carres)
Sortie
True True False
Itérer sur un dictionnaire
Itérez sur les clés directement, puis accédez aux valeurs.
# Itération sur un dictionnaire
carres = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in carres:
print(carres[i])
Sortie
1 9 25 49 81
Fonctions intégrées pour dictionnaires
Des fonctions standard telles que all(), any(), len() et sorted() sont fréquemment appliquées aux dictionnaires.
| Fonction | Description |
|---|---|
| all() | True si chaque clé évalue à True (ou si le dictionnaire est vide). |
| any() | True si une clé évalue à True ; False pour un dictionnaire vide. |
| len() | Nombre de paires clé/valeur. |
| cmp() | Compare deux dictionnaires (supprimé en Python 3). |
| sorted() | Retourne une liste triée des clés. |
Exemples :
# Fonctions intégrées pour dictionnaires
carres = {0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Sortie : False
print(all(carres))
# Sortie : True
print(any(carres))
# Sortie : 6
print(len(carres))
# Sortie : [0, 1, 3, 5, 7, 9]
print(sorted(carres))
Sortie
False True 6 [0, 1, 3, 5, 7, 9]
Python
- Maîtriser les types de données Python : Guide pratique
- Maîtriser les opérateurs Python : Guide complet
- Maîtriser l'instruction pass en Python : Guide pratique
- Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
- Maîtriser les itérateurs Python : fonctionnement et création des vôtres
- Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
- Maîtriser Python datetime : guide pratique pour les dates, heures et fuseaux horaires
- Python : Aperçu - Langage de haut niveau, lisible, interactif et orienté objet
- Nombres Python : Comprendre les types de données numériques immuables