====== Python : les dictionnaires ======
===== Présentation =====
Les **dictionnaires** permettent de mémoriser des informations en les associant à une **clé** qui est la plupart du temps une chaîne de caractères. Par exemple, un dictionnaire peut contenir un carnet d'adresses et on accède à chaque contact en précisant son nom.
===== Création d'un dictionnaire =====
Les parenthèses **()** délimitent les tuples, les crochets **[]** délimitent les listes et les accolades **{}** délimitent les dictionnaires.
==== Création d'un dictionnaire ====
Première méthode :
>>> carnet_adresse = dict()
>>> type(carnet_adresse)
{}
>>>
Deuxième méthode :
>>> carnet_adresse = {}
>>> type(carnet_adresse)
{}
>>>
==== Ajout de valeurs ====
Pour **ajouter** une valeur, il faut préciser la **clé** et la valeur **associée** :
>>> carnet = {}
>>> carnet["nom"] = "Dupond"
>>> carnet["prenom"] = "Jean"
>>> carnet
{'nom': 'Dupond', 'prenom': 'Jean'}
>>>
* on indique entre crochets la clé à laquelle on souhaite accéder.
* Si la clé n'existe pas, elle est ajoutée au dictionnaire avec la valeur spécifiée après le signe =.
* Sinon, l'ancienne valeur à l'emplacement indiqué est remplacée par la nouvelle.
==== Accès à une valeur ====
Pour accéder à une valeur, on utilise la clé associée :
>>> carnet["nom"]
'Dupond*'
>>>
Si la **clé n'existe pas** dans le dictionnaire, cela génère une **erreur**. Il est possible de tester au préalable l'existence d'une clé de cette façon :
>>> "nom" in carnet
True
>>> "adresse" in carnet
False
On peut utilisé comme clé, des chaînes de caractères (comme précédemment), des entiers, des listes ou les toris à la fois selon les besoins.
Par exemple :
* utilisation d'entiers pour les clés :
>>> mon_dictionnaire = {}
>>> mon_dictionnaire[0] = "a"
>>> mon_dictionnaire[1] = "e"
>>> mon_dictionnaire[2] = "i"
>>> mon_dictionnaire[3] = "o"
>>> mon_dictionnaire[4] = "u"
>>> mon_dictionnaire[5] = "y"
>>> mon_dictionnaire
{0: 'a', 1: 'e', 2: 'i', 3: 'o', 4: 'u', 5: 'y'}
>>>
* utilisation de tuples pour les clés :
echiquier = {}
echiquier[('a', 1)] = "tour blanche" # En bas à gauche de l'échiquier
echiquier[('b', 1)] = "cavalier blanc" # À droite de la tour
==== Création de dictionnaires préremplis ====
note = {"maths":12, "anglais":15, "histoire":13}
==== Supprimer des clés d'un dictionnaire ====
* avec le mot-clé **del** :
del carnet["nom"]
* avec la méthode de dictionnaire **pop** ; qui renvoie alors la valeur supprimée :
carnet.pop("nom")
==== Parcourir un dictionnaire ====
* parcourir la liste de **clés** :
>>> carnet
{'nom': 'Dupond', 'prenom': 'Jean', ('prenom', 2): 'Jean dominique'}
>>> for cle in carnet:
... print(cle)
...
nom
prenom
('prenom', 2)
>>>
Les clés ne s'affichent pas forcément dans l'ordre dans lequel on les a entrées car les dictionnaires n'ont pas de structure ordonnée.
* Parcours des **valeurs** du dictionnaire avec la méthode **values()** :
>>> for valeur in carnet.values():
... print(valeur)
...
Dupond
Jean
Jean dominique
>>>
La méthode values() permet aussi de faire des tests d'existence d'une valeur dans un dictionnaire :
>>> if "Dupond" in carnet.values():
... print("Le nom Dupond est déjà présent dans le carnet d'adresse.")
...
Le nom Dupond est déjà présent dans le carnet d'adresse.
>>>
==== Parcours des clés et valeurs simultanément ====
Pour obtenir à la fois la liste des clés et leur valeur, on utilise la méthode **items()** qui renvoie une liste de tuples contenant couples **clé : valeur**.
>>> for cle,valeur in carnet.items():
... print("La clé {} contient la valeur {}.".format(cle, valeur))
...
La clé nom contient la valeur Dupond.
La clé prenom contient la valeur Jean.
La clé ('prenom', 2) contient la valeur Jean dominique.
>>>
==== Retour au cours : Les instructions du langage Python ====
* [[.:c_langage_python|Cours : Les instructions du langage Python]]