Dictionnaires et méthodes avec Python
Avec Python, travailler avec de grands tableaux de deux dimensions (ou plus) tournerait vite au casse-tête sans l’aide des dictionnaires.
Dictionnaires
Un dictionnaire, en Python, est une structure de données qui permet de stocker des paires clé-valeur. La clé s’apparente à un mot dans votre dictionnaire préféré et la valeur à sa définition.
Exemple :
oeuvre = {
"compositeur": "Beethoven",
"nom": "Concerto pour piano et orchestre n°3",
"opus": 37
}
print(oeuvre["compositeur"])
On obtient :
Beethoven
compositeur, nom et opus sont les clés.
Avec un dictionnaire, il est rapide de trouver une donnée. Et surtout, une clé est explicite, contrairement à un indice !
Conversion en dictionnaire
Créons un dictionnaire à partir d’une liste de listes.
Prenons l’exemple de quatre commerciaux auxquels un certain nombre de clients sont rattachés.
commerciaux = [
["Ron", 230],
["Liz", 185],
["Luc", 180],
["Zoé", 210]
]
Une seule ligne de commande suffit :
comm_dico = {nom: clients for nom, clients in commerciaux}
Demandons combien de clients sont dans le portefeuille de Zoé…
print(comm_dico["Zoé"])
Nous obtenons :
210
Quatre méthodes
En Python, une méthode est une fonction spéciale, associée à un objet.
Par exemple, si l’on veut réécrire une variable texte en majuscules, on associe cette dernière à la méthode upper() en les séparant par un point.
texte.upper()
Ainsi il existe des méthodes de dictionnaires. Voyons-en quatre :
- .items() est très utilisée pour parcourir les paires clé-valeur. Nous l’illustrerons ci-dessous.
- .keys() : seulement les clés.
- .values() : seulement les valeurs.
- .get() récupère une valeur. Cette méthode sera elle aussi employée dans l’exemple ci-dessous.
Exemple
Explorons à présent une requête un peu plus élaborée. Sur une année, nos commerciaux voient leur nombre de clients évoluer. À chacun sont associées quatre valeurs (nombre de clients à chaque fin de trimestre). En utilisant un dictionnaire, nous déterminerons quel commercial a eu le plus de clients dans son portefeuille sur l’année et quelle est sa moyenne de clients (« le plus de clients » revient à déterminer la moyenne la plus élevée).
Nous partons d’un ensemble de listes.
clients = {
"Ron": [230, 225, 226, 201],
"Liz": [185, 189, 192, 195],
"Luc": [180, 190, 192, 189],
"Zoé": [210, 202, 210, 212]
}
Initialisons un ensemble de moyennes.
moyennes = {}
Puis nous utilisons une boucle avec la méthode items() (nous parcourons le dictionnaire) qui renvoie une vue de tous les couples du dictionnaire.
for nom, liste_clients in clients.items():
moyenne = sum(liste_clients) / len(liste_clients)
moyennes[nom] = moyenne
À cette étape du script, nous avons créé un ensemble de couples nom-moyenne.
Cherchons maintenant à quel nom se rattache la meilleure moyenne.
meilleur = max(moyennes, key = moyennes.get)
print(f"Meilleure moyenne de l'année : {meilleur} avec une moyenne de {moyennes[meilleur] :.2f}")
Output :
Meilleure moyenne de l'année : Ron avec une moyenne de 220.50
Remarquez l’utilisation de f dans la dernière ligne. Nous employons une f-string pour insérer de façon très pratique des valeurs de variables dans une chaîne de caractères (on peut faire autrement mais c’est un peu laborieux).
À la fin, :.2f signifie que l’on souhaite un affichage de la valeur avec deux décimales.