Cette page suit toujours le même plan : le vocabulaire, un exemple concret, les opérations de base, puis un algorithme complet avec une démonstration interactive, le code Python, et la complexité.
Chaque mot ci-dessous est utilisé exactement dans ce sens dans toute la page.
| Mot | Définition précise |
|---|---|
| Dictionnaire | Une structure qui associe à chaque clé une valeur. Contrairement à un tableau, on n'accède pas à une valeur avec un numéro d'indice mais avec une clé. |
| Clé | L'élément qui sert à retrouver une valeur dans le dictionnaire (par exemple un mot, un nom, un numéro). Dans un même dictionnaire, deux clés sont toujours différentes l'une de l'autre. |
| Valeur | La donnée associée à une clé. Contrairement aux clés, deux valeurs peuvent très bien être identiques. |
| Paire clé-valeur | L'association d'une clé et de sa valeur, écrite clé: valeur dans un dictionnaire Python. |
| Dictionnaire vide | Un dictionnaire qui ne contient encore aucune paire clé-valeur, noté {}. |
| Parcourir un dictionnaire | Examiner, une par une, toutes les clés (ou toutes les valeurs, ou toutes les paires) d'un dictionnaire. |
Test d'appartenance (in) | Le test qui répond à la question « cette valeur est-elle une clé du dictionnaire ? » par Vrai ou par Faux. |
| KeyError | L'erreur que Python déclenche si on essaie de lire d[clé] alors que cette clé n'existe pas dans le dictionnaire d. |
On utilise un dictionnaire nommé stock, qui associe à chaque fruit (la clé) la quantité disponible en stock (la valeur, un nombre entier) :
stock = {"pomme": 12, "banane": 5, "poire": 8}
Ce dictionnaire contient 3 paires clé-valeur : la clé "pomme" est associée à la valeur 12, la clé "banane" à la valeur 5, et la clé "poire" à la valeur 8.
stock| Opération | Code Python | Résultat sur l'exemple |
|---|---|---|
| Créer un dictionnaire vide | d = {} | {} |
| Créer un dictionnaire avec des valeurs | stock = {"pomme": 12, "banane": 5, "poire": 8} | 3 paires clé-valeur créées |
| Accéder à une valeur existante | stock["pomme"] | 12 |
| Accéder avec une valeur par défaut | stock.get("citron", 0) | 0 (car "citron" n'est pas une clé du dictionnaire) |
| Ajouter une nouvelle paire clé-valeur | stock["citron"] = 4 | le dictionnaire contient maintenant "citron": 4 |
| Modifier la valeur d'une clé existante | stock["banane"] = 6 | stock["banane"] vaut maintenant 6 |
| Tester si une valeur est une clé | "poire" in stock | True |
| Supprimer une paire clé-valeur | del stock["poire"] | "poire" n'est plus une clé du dictionnaire |
| Connaître le nombre de paires | len(stock) | 3 (avant toute suppression) |
stock["citron"] alors que "citron" n'est pas encore une clé du dictionnaire déclenche une erreur KeyError, et le programme s'arrête. C'est pour cette raison qu'on utilise stock.get("citron", 0) (qui renvoie une valeur par défaut au lieu de faire planter le programme), ou qu'on teste d'abord "citron" in stock avant d'accéder à la valeur.
On reprend stock = {"pomme": 12, "banane": 5, "poire": 8}, sans aucune suppression cette fois, pour illustrer les différentes façons de le parcourir :
| Instruction | Ce qu'elle parcourt | Résultat sur l'exemple |
|---|---|---|
for cle in stock: | chaque clé, une par une | "pomme", puis "banane", puis "poire" |
for cle in stock.keys(): | chaque clé (équivalent à la ligne précédente) | "pomme", "banane", "poire" |
for valeur in stock.values(): | chaque valeur, une par une | 12, 5, 8 |
for cle, valeur in stock.items(): | chaque paire clé-valeur en même temps | ("pomme", 12), ("banane", 5), ("poire", 8) |
stock donnera donc toujours "pomme", puis "banane", puis "poire", dans cet ordre.
stock = {"pomme": 12, "banane": 5, "poire": 8}for cle in stock: print(cle, "->", stock[cle])for cle, valeur in stock.items(): print(cle, "->", valeur)
dico = {}.element in dico.def compter_occurrences(liste): """Renvoie un dictionnaire {élément: nombre d'apparitions}.""" dico = {} for element in liste: if element in dico: dico[element] = dico[element] + 1 else: dico[element] = 1 return dico# Jeu de données : le même exemple que la démonstration ci-dessusachats = ["pomme", "banane", "pomme", "poire", "banane", "pomme"]print(compter_occurrences(achats))# Résultat affiché : {'pomme': 3, 'banane': 2, 'poire': 1}
compter_occurrences, la liste de n éléments n'est parcourue qu'une seule fois, et chaque opération sur le dictionnaire (le test in, la lecture, l'écriture) coûte en moyenne O(1). La complexité totale de l'algorithme est donc en O(n).d[clé] lève une erreur KeyError si la clé n'existe pas ; d.get(clé, valeur_par_défaut) évite cette erreur.d.keys(), d.values() et d.items() permettent de parcourir respectivement les clés, les valeurs, ou les paires clé-valeur.