Adloun

NSI (première) · Chapitre 5 · Application directe du cours

Pourquoi d 1, 2 = "x" échoue-t-il alors que d (1, 2) = "x" réussit

Les dictionnaires · Construire, lire, modifier · niveau 1 (application)

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

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →