Adloun

É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.