ParcoursOuvrir l'appli

Les dictionnaires

Python, dictionnaires et compréhensions · 45 min

Retrouver une valeur par son nom

Avec une liste, on retrouve une valeur par sa position : notes[2]. Mais souvent, la position ne veut rien dire. Quel est le prix du riz ? Quel est le numéro de téléphone d'Awa ? On veut chercher par nom.

Un vrai dictionnaire fonctionne comme ça : on cherche un mot, on trouve sa définition. Un répertoire téléphonique aussi : on cherche un nom, on trouve un numéro.

prix = {"riz": 1200, "savon": 500, "huile": 1500}
prix["riz"]        # 1200
prix["savon"]      # 500

On accède à une valeur avec des crochets, comme pour une liste, mais avec la clé au lieu de l'index.

Lire, ajouter, modifier, supprimer

Écriture Effet
prix["riz"] lit la valeur de la clé "riz"
prix["sucre"] = 900 ajoute la paire si la clé n'existe pas
prix["riz"] = 1300 modifie la valeur si la clé existe déjà
del prix["huile"] supprime la paire
"riz" in prix True si la clé existe
len(prix) le nombre de paires

Remarque : ajouter et modifier s'écrivent pareil. Si la clé existe, sa valeur est remplacée ; sinon, elle est créée. Une clé est unique : un dictionnaire ne peut pas avoir deux fois la clé "riz".

L'erreur KeyError

prix["lait"]
KeyError: 'lait'

« Erreur de clé : 'lait' n'existe pas. » C'est le IndexError des dictionnaires. Cause fréquente : une faute de frappe ou une majuscule ("Riz" n'est pas "riz").

Lire sans risque : .get

prix.get("lait")          # None, sans erreur
prix.get("lait", 0)       # 0 : la valeur par défaut qu'on choisit

.get(clé, défaut) renvoie la valeur si la clé existe, et la valeur par défaut sinon. Tu vas beaucoup t'en servir pour compter, à la leçon suivante.

Pratique : Manipule un dictionnaire

Prévois chaque résultat avant d'appuyer sur Entrée.

Un terminal simulé t'attend dans l'appli, sans rien installer. Pratiquer

Exercice : La fiche d'un élève

Crée un dictionnaire eleve avec trois clés : "nom" (valeur "Awa"), "age" (valeur 19) et "ville" (valeur "Bafoussam").

Puis, en utilisant le dictionnaire, affiche : Awa, 19 ans, Bafoussam.

Voir une solution
eleve = {"nom": "Awa", "age": 19, "ville": "Bafoussam"}
print(f"{eleve['nom']}, {eleve['age']} ans, {eleve['ville']}")

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Le prix d'un article

Range dans a_payer le prix de quantite unités de article, en cherchant le prix unitaire dans le dictionnaire prix.

Si l'article n'existe pas dans le dictionnaire, a_payer doit valoir 0, sans erreur.

Voir une solution
prix = {"riz": 1200, "savon": 500, "huile": 1500}   # donné
article = "savon"                                    # donné
quantite = 3                                         # donné

a_payer = prix.get(article, 0) * quantite

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Mettre à jour un stock

Une vente de vendu unités de produit vient d'avoir lieu. Retire-les du stock.

Puis, si le stock de ce produit tombe à 0, supprime la clé du dictionnaire avec del.

Voir une solution
stock = {"riz": 10, "savon": 4}   # donné
produit = "riz"                     # donné
vendu = 3                           # donné

stock[produit] -= vendu
if stock[produit] == 0:
    del stock[produit]

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Teste-toi

Après ces lignes, que vaut stock ? python stock = {"riz": 10} stock["riz"] = 4 stock["sel"] = 7
  1. {"riz": 10, "riz": 4, "sel": 7}
  2. {"riz": 4, "sel": 7} (bonne réponse)
  3. {"riz": 14, "sel": 7}
  4. Une erreur