Les dictionnaires
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}
- des accolades
{ }autour ; - chaque paire s'écrit
clé: valeur, avec deux-points ; - les paires sont séparées par des virgules.
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) * quantiteDans 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
{"riz": 10, "riz": 4, "sel": 7}{"riz": 4, "sel": 7}(bonne réponse){"riz": 14, "sel": 7}- Une erreur