Parcours
I. Parcourir un dictionnaire⚓︎
Testez
Utilisons la même syntaxe que celle employée avec les listes python :
Question
Nous disposons du dictionnaire : mon_dictionnaire
.
Le parcours avec la boucle for element in mon_dictionnaire
se fait :
- sur les clés du dictionnaire.
- sur les valeurs du dictionnaire.
- sur les paires clé, valeur du dictionnaire.
- sur les indices du dictionnaires
sur les clés du dictionnaire.
sur les valeurs du dictionnaire.sur les paires clé, valeur du dictionnaire.sur les indices du dictionnairesIl n'y a pas d'"indices" pour des dictionnaires
🐘 À retenir
Soit le dictionnaire mon_dictionnaire
Le parcours d'un dictionnaire se fait sur ses clés en écrivant :
Gaston fait ses courses
Gaston va faire ses courses dans une boutique "prix ronds". Mais comme il est passionné de Python, il a créé un dictionnaire pour représenter ses achats appelé achats
et un autre pour représenter le prix de chaque article appelé prix
.
Exemple pour l'achat d'un kg de farine,d'une plaquette de beurre, et d'un kg de sucre.
Il connait les prix suivants :
produit | 1kg de farine | 1 kg de sucre | 1 l de lait | 1 plaquette de beurre |
---|---|---|---|---|
prix | 1 | 3 | 2 | 2 |
Voici par exemple les dictionnaires :
achats = {"farine": 2, "beurre": 1, "sucre": 2}
prix = {"farine": 1, "sucre": 3, "lait": 2, "beurre": 2}
- Le dictionnaire
achats
a pour clés les ingrédients et pour valeur le nombre d'ingrédients correspondants achetés.
Ici Gaston achète 2kg de farine, 1 plaquette de beurre, 2 kgs de sucre. - Le dictionnaire
prix
a pour clés les ingrédients et pour valeur le prix de chacun.
Ici 1kg de farine coûte 1 €, 1kg de sucre coûte 3 € etc.
Aidez Gaston à compléter la fonction facture
qui prend en paramètres les deux dictionnaires, et renvoie le montant qu'il devra payer pour ses achats. Les valeurs du dictionnaire prix
sont des entiers.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
II. Obtenir toutes les valeurs d'un dictionnaire⚓︎
Les notes d'Alice
Alice a créé un dictionnaire avec ses notes de NSI.
Par exemple notes_Alice = {"test_1": 14, "test_2": 16, "test_3": 18}
Aidez-là à compléter la fonction qui renvoie une liste des notes qu'elle a obtenues
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🐘 À retenir
Soit le dictionnaire mon_dictionnaire
on peut obtenir une liste valeurs
de toutes les valeurs de ce dictionnaire ainsi :
Attention
🌵 🌵 Tester ci-dessous
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
👉 Il faut se souvenir qu'un dictionnaire n'est pas ordonné ...
III. Obtenir tous les couples (clé, valeur) d'un dictionnaire⚓︎
Les notes d'Alice
Alice a créé un dictionnaire avec ses notes de NSI.
Par exemple notes_Alice = {"test_1": 14, "test_2": 16, "test_3": 18}
Aidez-là à compléter la fonction qui renvoie une liste de tuples (devoir, note).
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🐘 À retenir
Soit le dictionnaire mon_dictionnaire
on peut obtenir une liste des couples (clé, valeur) de ce dictionnaire ainsi :
Attention
🌵 🌵 Tester ci-dessous
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
👉 Il faut se souvenir qu'un dictionnaire n'est pas ordonné ...
IV. Présentation des trois méthodes keys
, values
et items
⚓︎
Attention
Les objets renvoyés par les méthodes keys, values, items sont d’un type particulier,leur connaissance n’est pas au programme. Par contre les méthodes keys
, values
et items
le sont.
👉 Remarquons néanmoins que l'on peut toujours se passer de ces méthodes.
Testez
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Les vues
🌵 En fait, les objets renvoyés par les méthodes keys
, values
et items
sont des objets que l'on appelle des "vues".
👉 Testez ci-dessous et observez ce qui est renvoyé.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
transformer des vues en listes Python
👉 Testez ci-dessous et observez ce qui est renvoyé.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
obtenir des listes de clés, valeurs, couples (clé, valeur)
On peut créer les listes de clés, de valeurs ou de couples (clé, valeur) :
Soit le dictionnaire mon_dictionnaire
list(mon_dictionnaire.keys())
permet d'obtenir une liste des clés demon_dictionnaire
list(mon_dictionnaire.values())
permet d'obtenir une liste des valeurs demon_dictionnaire
list(mon_dictionnaire.items())
permet d'obtenir une liste des tuples (clé, valeur) demon_dictionnaire
V. La méthode keys
⚓︎
Testez
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Ne connaissez-vous pas une autre façon de procéder ?
Nous aurions pu tout simplement écrire
Testez
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Parcourir avec la méthode keys
Testez ci-dessous
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🐘 À retenir
Soit le dictionnaire mon_dictionnaire
mon_dictionnaire.keys()
permet de parcourir toutes les clés de mon_dictionnaire
Question
ferme_gaston = {"lapin": 5, "vache": 7, "cochon": 2, "cheval": 4}
Que renvoie l'expression "cheval" in ferme_gaston.keys()
?
-
True
-
False
- Une erreur
- Rien
True
False
Une erreurRien
Question
ferme_gaston = {"lapin": 5, "vache": 7, "cochon": 2, "cheval": 4}
Quelle instruction permet de parcourir les clés de ferme_gaston
?
-
for cle in range(ferme_gaston)
-
for cle in ferme_gaston.keys
-
for cle in ferme_gaston.keys()
-
for cle in keys.ferme_gaston()
-
for cle in ferme_gaston
for cle in range(ferme_gaston)
Il ne faut pas oublier les parenthèses.for cle in ferme_gaston.keys
for cle in ferme_gaston.keys()
for cle in keys.ferme_gaston()
for cle in ferme_gaston
VI. La méthode values
⚓︎
Testez
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Parcourir avec la méthode values
Testez ci-dessous
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🐘 À retenir
Soit le dictionnaire mon_dictionnaire
mon_dictionnaire.values()
permet d'accéder à toutes les valeurs de mon_dictionnaire
Question
couleurs = {"white": "blanc", "black": "noir", "red": "rouge"}
Que renvoie l'expression "vert" in couleurs.values()
?
-
True
-
False
- Une erreur
- Rien
True
False
Une erreurRien
Question
pokemons = {"Salamèche" : "Feu", "Reptincel": "Feu",
"Carapuce": "Eau", "Chenipan": "Insecte"}
Quelle instruction permet de parcourir les types des pokémons de ce dictionnaire ?
-
for type_pokemon in range(pokemons)
-
for type_pokemon in pokemons.values()
-
for type_pokemon in pokemons.values
-
for type_pokemon in values.pokemons()
-
for type_pokemon in pokemons
for type_pokemon in range(pokemons)
for type_pokemon in pokemons.values()
Il ne faut pas oublier les parenthèses.for type_pokemon in pokemons.values
for type_pokemon in values.pokemons()
Cette instruction parcourt les clésfor type_pokemon in pokemons
utiliser la méthode values
Bob a constitué un dictionnaire de recettes de la façon suivante : les clés sont les noms des gâteaux, et les valeurs les listes de ingrédients pour chaque gâteau.
Aidez-le à écrire la fonction Python qui prend en paramètres un dictionnaire des recettes, un ingrédient, et qui renvoie le nombre de recettes utilisant cet ingrédient.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
VII. La méthode items
⚓︎
Testez
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Parcourir avec la méthode items
Testez ci-dessous
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🐘 À retenir
Soit le dictionnaire mon_dictionnaire
mon_dictionnaire.items()
permet d'accéder à tous les tuples (clé, valeur) de mon_dictionnaire
Question
ferme_gaston = {"lapin": 5, "vache": 7, "cochon": 2, "cheval": 4}
Que renvoie l'expression ("dragon", 2) in ferme_gaston.items()
?
-
True
-
False
- Une erreur
- Rien
True
False
Une erreurRien
Question
ferme_gaston = {"lapin": 5, "vache": 7, "cochon": 2, "cheval": 4}
Quelle instruction permet de parcourir les tuples (animal, effectif) de ferme_gaston
?
-
for paire in range(ferme_gaston)
-
for paire in items.ferme_gaston
-
for paire in ferme_gaston.items
-
for paire in ferme_gaston.items()
for paire in range(ferme_gaston)
for paire in items.ferme_gaston
Il ne faut pas oublier les parenthèses.for paire in ferme_gaston.items
for paire in ferme_gaston.items()
utiliser la méthode items
Alice est étourdie, elle ne se souvient plus à quel devoir elle a obtenu la note "18".
Compléter ci-dessous en tenant compte des assert
proposés.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Utiliser les méthodes keys
, values
et items
On peut parcourir les vues créées par ces méthodes, de façon analogue à ce que l'on ferait avec d'autres séquences comme des listes :
Soit le dictionnaire mon_dictionnaire
mon_dictionnaire.keys()
permet de parcourir toutes les clés demon_dictionnaire
mon_dictionnaire.values()
permet de parcourir toutes les valeurs demon_dictionnaire
mon_dictionnaire.items()
permet de parcourir tous les couples (clé, valeur) demon_dictionnaire
VIII. QCM final⚓︎
Question
On considère le dictionnairesymboles_hexa = {"A": 10, "B": 11, "C": 12, "D": 13, "E":14, "F":15}
Que peut afficher print(list(symboles_hexa.items()))
?
-
["A", "B", "C", "D", "E", "F"]
-
[10, 11, 12, 13, 14, 15]
-
[(10,"A"), (11, "B") ,(12, "C"), (13, "D"), (14, "E"), (15, "F")]
-
[("A": 10), ("B": 11), ("C": 12), ("D": 13), ("E": 14), ("F": 15)]
-
[("A", 10), ("B", 11), ("C", 12), ("D", 13), ("E", 14), ("F", 15)]
["A", "B", "C", "D", "E", "F"]
[10, 11, 12, 13, 14, 15]
[(10,"A"), (11, "B") ,(12, "C"), (13, "D"), (14, "E"), (15, "F")]
[("A": 10), ("B": 11), ("C": 12), ("D": 13), ("E": 14), ("F": 15)]
[("A", 10), ("B", 11), ("C", 12), ("D", 13), ("E", 14), ("F", 15)]
Liquidation
Que peut-il s'afficher si l'on exécute le script suivant :
stock = {"kiwis": 2, "pommes": 10, "bananes": 6, "noix": 4}
for (fruit, nombre) in stock.items():
if nombre < 5:
stock[fruit] = 0
print(stock)
-
{"pommes": 10, "kiwis": 0, "bananes": 6, "noix": 0}
-
{"kiwis": 0, "pommes": 10, "bananes": 6, "noix": 0}
-
{"0": 2, "pommes": 10, "bananes": 6, "0": 4}
-
{"kiwis": 2, "pommes": 10, "bananes": 6, "noix": 4}
{"pommes": 10, "kiwis": 0, "bananes": 6, "noix": 0}
Il n'y a pas d'ordre pour écrire un dictionnaire.{"kiwis": 0, "pommes": 10, "bananes": 6, "noix": 0}
{"0": 2, "pommes": 10, "bananes": 6, "0": 4}
Il faut modifier les valeurs strictement inférieures à 5 en 0.{"kiwis": 2, "pommes": 10, "bananes": 6, "noix": 4}
Question
couleurs = {"white": "blanc", "black": "noir", "red": "rouge"}
Que renvoie l'expression couleurs[0]
?
-
"white"
-
"blanc"
- Une erreur
"white"
"blanc"
Une erreur. On accède à une valeur avec la clé
Question
couleurs = {"white": "blanc", "black": "noir", "red": "rouge"}
Quelle instruction faut-il écrire pour modifier ce dictionnaire et obtenir :
couleurs = {"white": "blanc", "black": "noir", "red": "rouge, "green": "vert"}
-
couleurs["green"] = "vert"
-
couleurs.append("green", "vert")
- Ce n'est pas possible
couleurs["green"] = "vert"
couleurs.append("green", "vert")
Ce n'est pas possible
Question
stock = {"kiwis": 2, "pommes": 10, "bananes": 6, "noix": 4}
Quelle est l'instruction qui permet d'afficher le plus grand nombre de fruits d'une variété ?
-
print(max(stock))
-
print(max(stock.values()))
-
print(max(stock.values))
-
print(max([stock[fruit] for fruit in stock]))
print(max(stock))
print(max(stock.values()))
Ne pas oublier les parenthèsesprint(max(stock.values))
print(max([stock[fruit] for fruit in stock]))
😊 Si vous avez bien réussi ces QCM, vous pouvez passer aux exercices dans la section suivante ...
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)