Pourquoi d 1, 2 = "x" échoue-t-il alors que d (1, 2) = "x" réussit
Application directe du cours · niveau 1 (application) · NSI (première), chapitre 5 — Les dictionnaires · Construire, lire, modifier
Énoncé
Pourquoi d[[1, 2]] = "x" échoue-t-il alors que d[(1, 2)] = "x" réussit ? Répondre en une phrase, en s'appuyant sur le chapitre 4, puis vérifier le message d'erreur exact.
Corrigé
Le dictionnaire range la valeur à un emplacement calculé à partir de la clé : une clé doit donc être non modifiable, or un tableau l'est — si on le modifiait après coup, la valeur resterait là où l'ancienne clé l'avait mise et deviendrait introuvable.
d = {}
try:
d[[1, 2]] = "x"
except TypeError as e:
assert str(e) == "unhashable type: 'list'"
d[(1, 2)] = "x"
assert d == {(1, 2): "x"}
Le mot unhashable nomme le mécanisme — le hachage — qui relève de la terminale ; ce qu'il faut retenir en première est la règle : p-uplet oui, tableau non.
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.