Écrire un dictionnaire en compréhension
Exercice supplémentaire · niveau 2 · NSI (première), chapitre 5 — Les dictionnaires · Les outils de la bibliothèque
Énoncé
Écrire un dictionnaire en compréhension : les carrés de à , puis les seules entrées de clé paire. Enfin, inverser {"a": 1, "b": 1} par compréhension. Le résultat surprend-il ?
Corrigé
carres = {n: n * n for n in range(6)}
assert carres == {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
pairs = {n: v for n, v in carres.items() if n % 2 == 0}
assert pairs == {0: 0, 2: 4, 4: 16}
inv = {v: k for k, v in {"a": 1, "b": 1}.items()}
assert inv == {1: "b"} # la comprehension perd AUSSI
Non, il ne surprend pas — ou plutôt, il ne devrait pas. Une compréhension n'est qu'une boucle écrite autrement : elle installe les entrées une à une, dans l'ordre, et la dernière écrase. Une écriture plus courte ne change aucune règle ; elle rend seulement la perte moins visible, ce qui est un argument pour préférer la boucle explicite quand on n'est pas sûr de l'unicité des valeurs.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.