Les dictionnaires Python pour des données clés-valeurs

Les dictionnaires Python sont un type de données utilisé pour stocker des éléments non ordonnées sous forme de clé-valeur. Dans une liste, les indices doivent être des entiers, dans un dictionnaire, les indices peuvent contenir des types de données différents.

Dans les dictionnaires Python, chaque clé est associée à une valeur, ce qui permet d’identifier vos données. Par conséquent, il est possible de récupérer, ajouter, supprimer, modifier des valeurs à l’aide d’une clé.

dictionnaires python

Un dictionnaire Python est très similaire à ce que nous appelons tableau associatif dans d’autres langues.

Créer un dictionnaire Python

Afin de créer un dictionnaire, on utilise deux accolades qui contiendrons des éléments séparées par des virgules. De plus, chaque élément se compose d’une clé, suivie de deux points et d’une valeur. Les clés doivent être uniques dans le dictionnaire, les valeurs en double sont autorisées.

Un dictionnaire vide, ne contient pas de paires clé-valeur et il est représenté avec deux accolades vides {}. Python dispose d’une fonction dict(), qui vous permet de créer un dictionnaire.

>>> mon_dictionnaire = dict()
>>> mon_dictionnaire
{}

Les clés du dictionnaire doivent être de types de données immuables tels que des chaînes de caractères, des nombres ou des tuples (type de données). Donc, pas une liste, mais elle peut être utilisée comme valeur.

Créons un dictionnaire Python avec des éléments.

>>> capitals = {"France": "Paris", "Espagne": "Madrid", "Italie": "Rome"}

Aussi, la même clé ne peut pas apparaître plus d’une fois. Si c’est le cas, seule la dernière sera conservée. La valeur peut être de n’importe quel type de données et elle peut être attribuée à plusieurs clés.

Accéder, ajouter, modifier et supprimer les valeurs d’un dictionnaire

On accède à une valeur associée à une clé dans le dictionnaire, avec le nom du dictionnaire suivi de sa clé entre crochets.

>>> capitals["France"]
'Paris'

Aussi, vous pouvez accéder à plusieurs valeurs dans un dictionnaire Python.

>>> capitals["France"], capitals["Espagne"]
('Paris', 'Madrid')

Il est également possible d’accéder à un élément à l’aide de la méthode get(). Spécifier une clé pour récupérer sa valeur.
La méthode prend au maximum deux paramètres :
dictionaiee.get(clé, valeur)
En effet, valeur est la valeur à renvoyer si la clé spécifiée n’existe pas. Cette valeur est None par défaut. Ce paramètre est facultatif.

>>> capitals.get("France")
'Paris'

Nous pouvons ajouter de nouvelles paires clé-valeur à un dictionnaire existant.

>>> capitals["Allemagne"] = "Berlin"
>>> capitals
{'France': 'Paris', 'Espagne': 'Madrid', 'Italie': 'Rome', 'Allemagne': 'Berlin'}

Pour modifier une valeur dans un dictionnaire Python, écrivez le nom du dictionnaire suivi de la clé entre crochets puis de la nouvelle valeur associée à cette clé.

>>> fruits =  {"pomme": 2, "banane": 3, "fraise": 1}
>>> fruits["pomme"] = 5
>>> fruits
{'pomme': 5, 'banane': 3, 'fraise': 1}

En outre, la méthode update() permet de mettre à jour ou de modifier un dictionnaire.

# modifier et ajouter des éléments
>>> fruits.update({"poire": 3, 'pomme': 5})
>>> fruits
{'pomme': 5, 'banane': 3, 'fraise': 1, 'poire': 3}

L’instruction del permet de supprimer une paire d’un dictionnaire ou de l’objet dictionnaire lui-même.
Supprimer un élément d’un dictionnaire.

>>> del fruits["pomme"]
>>> fruits
{'banane': 3, 'fraise': 1}

Utilisons del pour supprimer le dictionnaire.

>>> del fruits
>>> fruits
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    fruits
NameError: name 'fruits' is not defined

Afficher les clés et les valeurs

La classe dictionnaire Python, dispose de deux méthodes keys() et values(). Ces méthodes renvoient un objet constitué respectivement de clés et de valeurs.

>>> fruits =  {"pomme": 2, "banane": 3, "fraise": 1}
>>> fruits.keys()
dict_keys(['pomme', 'banane', 'fraise'])
>>> fruits.values()
dict_values([2, 3, 1])

Le résultat renvoyé par les méthodes keys() et values() est stocké dans un objet liste.

Les dictionnaires Python imbriqués

Lorsque un dictionnaire est à l’intérieur d’un autre, on parle de dictionnaire imbriqué. Ou, en d’autres termes, un dictionnaire imbriqué est une collection de dictionnaires.

Supposons que nous avons trois dictionnaires qui stockent des informations sur des étudiants.

>>> dic1 = {"nom": "Sophie", "age": 19}
>>> dic2 = {"nom": "Tom", "age": 20}
>>> dic2 = {"nom": "Anna", "age": 21}

Créons un dictionnaire qui stockera les données des trois étudiants.

>>> dic = {"étudient1": dic1, "étudient2": dic2, "étudient3": dic3}
>>> dic
{'étudient1': {'nom': 'Sophie', 'age': 19}, 'étudient2': {'nom': 'Tom', 'age': 20}, 'étudient3': {'nom': 'Anna', 'age': 21}}

Pour accéder à un élément dans un dictionnaire imbriqué, nous utiliserons la syntaxe d’indexation.

>>> dic["étudient1"]["nom"]
'Sophie'

Nous spécifions d’abord la clé de l’élément du dictionnaire externe. Ensuite, nous spécifions la clé de l’élément du dictionnaire interne.

En fait, vous pouvez utiliser cette syntaxe d’indexation pour ajouter, modifier et supprimer des éléments dans un dictionnaire imbriquée.

# ajouter un langage de programmation à Sophie
>>> dic["étudient1"]["langage"] = "python"
>>> dic
{'étudient1': {'nom': 'Sophie', 'age': 19, 'langage': 'python'}, 'étudient2': {'nom': 'Tom', 'age': 20}, 'étudient3': {'nom': 'Anna', 'age': 21}}

Les méthodes et les fonctions de dictionnaires Python

Comme avec les chaînes de caractères et listes, il existe des méthodes que vous pouvez utiliser avec les dictionnaires Python. On a déjà vu les méthodes get(), keys(), values() et updates().

clear() : supprimer les paires clé:valeur dans le dictionnaire.

>>> fruits =  {"pomme": 2, "banane": 3, "fraise": 1}
>>> fruits.clear()
>>> fruits
{}

items() : renvoie une liste de tuples des clés et des valeurs de chaque élément.

>>> fruits.items()
dict_items([('pomme', 2), ('banane', 3), ('fraise', 1)])

pop() : supprime un élément en utilisant sa clé et renvoie sa valeur.

>>> fruits.pop("pomme")
2
>>> fruits
{'banane': 3, 'fraise': 1}

popitem() : supprime et renvoie le dernier élément ajouté.

>>> fruits =  {"pomme": 2, "banane": 3, "fraise": 1}
>>> fruits.popitem()
('fraise', 1)

len() : renvoie le nombre d’éléments dans un dictionnaire Python.

>>> fruits =  {"pomme": 2, "banane": 3, "fraise": 1}
>>> len(fruits)
3

L’opérateur in et les dictionnaires

L’opérateur in fonctionne également sur les dictionnaires, il vous indique si une clé est dans le dictionnaire.

>>> "pomme" in fruits
True

Vérifier si une clé existe avec la méthode values().

>>> fruits.values()
dict_values([2, 3, 1])
>>> 2 in fruits    # in, vérifie les clés
False
>>> 2 in fruits.values()
True

Nous pouvons récupérer les valeurs d’un dictionnaire Python sous forme d’une liste.

>>> list(fruits.values())
[2, 3, 1]

Ou encore, stocker le résultat dans une variable.

>>> valeurs = list(fruits.values())
>>> 3 in valeurs
True

Les dictionnaires comme compteurs

Supposons que vous aviez une chaîne de caractère et que vous souhaitiez compter le nombre d’apparitions de chaque lettre. En fait, il existe plusieurs méthodes pour effectuer cette tâche. Toutefois, si vous utilisez un dictionnaire, vous n’êtes pas obligé de connaître les lettres à l’avance.

>>> mot = 'abgtrhhgdazseszacvfrz'
>>> dic = dict()
>>> for lettre in mot:
	if lettre not in dic:
		dic[lettre] = 1
	else:
		dic[lettre] = dic[lettre] + 1

		
>>> dic
{'a': 3, 'b': 1, 'g': 2, 't': 1, 'r': 2, 'h': 2, 'd': 1, 'z': 3, 's': 2, 'e': 1, 'c': 1, 'v': 1, 'f': 1}

Nous avons obtenu un histogramme, qui est un terme statistique représentant le nombre de répétitions d’un objet.

La boucle for parcourt la chaîne. A chaque tour de boucle, si le caractère lettre n’est pas dans le dictionnaire, nous créons un nouvel élément avec la clé lettre et la valeur initiale 1. Si lettre est déjà dans le dictionnaire, nous incrémentons dic [lettre], ce qui actualise le compteur.

Nous allons utiliser la méthode get() dans le code précédent. Étant donné que cette méthode renvoie une valeur par défaut si la clé n’est pas dans le dictionnaire.
En outre, nous pouvons réduire les quatre lignes de l’instruction if en à une seule.

>>> mot = 'abgtrhhgdazseszacvfrz'
>>> dic = dict()
>>> for lettre in mot:
        # à chaque tour, on récupère la valeur dic.get(lettre, 0)
        # de la clé dic[lettre] et on incrémente de 1
	dic[lettre] = dic.get(lettre, 0) + 1	
>>> dic
{'a': 3, 'b': 1, 'g': 2, 't': 1, 'r': 2, 'h': 2, 'd': 1, 'z': 3, 's': 2, 'e': 1, 'c': 1, 'v': 1, 'f': 1}

L’utilisation de la méthode get() a simplifié notre code d’une manière incroyable.

Les dictionnaires Python, les listes et la boucle for

La boucle for parcourt les éléments d’un dictionnaire, affiche chaque clé ainsi que sa valeur.

>>> fruits =  {"pomme": 2, "banane": 3, "fraise": 1}
>>> for key in fruits:
	print(key, fruits[key])
	
pomme 2
banane 3
fraise 1

Nous allons afficher les clés dans l’ordre alphabétique.
En fait, nous allons créer une liste de toutes les clés du dictionnaire avec la méthode keys().

>>> fruits =  {"pomme": 2, "banane": 3, "fraise": 1}
>>> liste = list(fruits.keys())
>>> print(liste)
['pomme', 'banane', 'fraise']

Puis, nous allons trier cette liste en utilisant la méthode de liste sort(). On a vu dans le tutoriel sur les listes Python, que les méthodes de listes modifient l’objet.

>>> liste.sort()
>>> liste
['banane', 'fraise', 'pomme']

En fin, nous allons parcourir la liste triée, en recherchant chaque clé et en affichant chaque élément (clé-valeur) dans l’ordre trié.

>>> for key in liste:
	print(key, fruits[key])
	
banane 3
fraise 1
pomme 2

Les dictionnaires Python pour des données clés-valeurs

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Retour en haut