Adloun

Écrire associer(cles, valeurs) qui construit le dictionnaire associant…

Exercice d'entraînement · niveau 2 · NSI (première), chapitre 5 — Les dictionnaires · Construire et modifier

Énoncé

Écrire associer(cles, valeurs) qui construit le dictionnaire associant cles[i] à valeurs[i]. Que faire si une clé est répétée ?

Corrigé


def associer(cles, valeurs):
    """Dictionnaire associant cles[i] a valeurs[i].

    Precondition : meme longueur. Si une cle est repetee, la DERNIERE
                   valeur l'emporte, et le resultat est plus court que les
                   tableaux -- la postcondition le dit.
    """
    assert len(cles) == len(valeurs), "longueurs differentes"
    d = {}
    for i in range(len(cles)):
        d[cles[i]] = valeurs[i]
    assert len(d) <= len(cles)
    return d

assert associer(["a", "b"], [1, 2]) == {"a": 1, "b": 2}
assert associer(["a", "a"], [1, 2]) == {"a": 2}
assert associer([], []) == {}

La précondition sur les longueurs est indispensable : sans elle, des tableaux inégaux donneraient IndexError — ou pire, un résultat silencieusement tronqué si l'on avait écrit zip. La postcondition len(d) &lt;= len(cles) est une inégalité, et c'est ce qui la rend honnête : promettre l'égalité serait faux dès qu'une clé se répète.

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.