Principes fondamentaux
======================

Définition
----------

Un dictionnaire est une *association* entre des clés et des valeurs.

* Les clés sont uniques
* Les valeurs sont arbitraires

Création de dictionnaires
-------------------------

Les dictionnaires sont entourés par des accolades: ``{``, ``}`` ::

    dictionnaire_vide =  {}

Ensuite, chaque paire de clé/valeur est séparée par des virgules ``,``
avec ``:`` ente la clé et la valeur ::

    une_clé_une_valeur = {"a": 42}

    deux_clés_deux_valeurs = {"a": 42, "b": 53}


Accès aux valeurs
------------------

Avec ``[]``, comme pour les listes, mais avec une *clé* à la place d'un *index*::

    scores = {"john": 10, "bob": 42}

    print(scores["john"])
    # affiche: 10

    print(scores["bob"])
    # affiche: 42

    print(scores["charlie"])
    # erreur: KeyError


Modifier la valeur d'une clé
-----------------------------

Comme pour les listes, avec une assignation::

    scores = {"john": 10, "bob": 42}
    scores["john"] = 20
    print(scores)
    # affiche: {"john": 20, "bob": 42}

Créer une nouvelle clé
-----------------------

Même mécanisme que pour la modification des clés existantes::

    scores = {"john": 10, "bob": 42}
    scores["charlie"] = 30
    print(scores)
    # affiche: {"john": 20, "bob": 42, "charlie": 30}

*rappel*: ceci ne fonctionne pas avec les listes: on ne peut
pas "créer" de nouveaux éléments dans la liste juste
avec un index::

    ma_liste = ["a", "b"]
    ma_liste[1] = "c"
    print(ma_liste)
    # affiche: ["a", "c"]

    ma_liste[3] = "d"
    # erreur: IndexError

del
---

Détruire une clé
+++++++++++++++++

Avec ``del`` - un nouveau mot-clé::

    scores = {"john": 10, "bob": 42}
    del scores["bob"]
    print(scores)
    # affiche: {"john": 10}

Détruire un élément d'une liste
++++++++++++++++++++++++++++++++

Aussi avec ``del``::

    fruits = ["pomme", "banane", "poire"]
    del fruits[1]
    print(fruits)
    # affiche: ["pomme", "poire"]

Détruire une variable
+++++++++++++++++++++

Encore et toujours ``del``::

    mon_entier = 42
    mon_entier += 3
    print(mon_entier)
    # affiche: 45

    del mon_entier
    mon_entier += 1
    # erreur: NameError


