Adloun

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.