Les dictionnaires Python
Présentation
Un dictionnaire Python est une structure de données organisée sous forme de couples clé : valeur
.
Contrairement aux listes dans lesquelles les valeurs sont identifiĂ©es par leur indice, dans un dictionnaire, une valeur est associĂ©e Ă une clĂ©. Ces clĂ©s peuvent ĂȘtre des entiers, des chaĂźnes de carcactĂšres, des tuples...
Considérons par exemple le dictionnaire suivant qui contient les dates de naissances de Roméo et Juliette :
naissances= {
"Roméo": 20040517,
"Juliette": 20040417
}
"Roméo"
et "Juliette"
sont les clés du dictionnaire, 20040517
et 20040417
les valeurs associées.
Des clés immuables
Lors de la construction d'un dictionnaire, Python associe à chaque clé une valeur précise. Cette association repose sur le fait que la clé ne va pas évoluer au fil de l'exécution du programme. Si c'était le cas, l'association deviendrait caduque dÚs que la clé est modifiée.
Les clĂ©s des dictionnaires Python doivent donc ĂȘtre des objets non modifiables, immuables.
Retenons pour faire simple qu'une liste ne peut pas ĂȘtre utilisĂ©e comme clĂ© d'un dictionnaire (car on peut la modifier au fil du programme).
Utilisation
On rappelle les opérations suivantes sur les dictionnaires :
Création
- Création d'un dictionnaire vide :
vide = { }
- Création d'un dictionnaire « à la main » :
animal = {"nom": "Oli","espÚce": "Chat","jour": 10,"mois": "juin","année": 2020}
Lecture de valeur
Les valeurs sont identifiées par leur clé. On accÚde à une valeur en utilisant des crochets :
>>> repertoire = {"firstname": "Clarissa","lastname": "Dalloway","day": 14,"month": "May","year": 1925}
>>> repertoire["firstname"]
'Clarissa'
>>> repertoire["day"]
14
Modification de valeur
- On modifie ou l'on ajoute des valeurs avec une simple affectation :
>>> echiquier = {(0, 0): "Roi blanc", (5, 1): "Roi noir"}
>>> echiquier[(0, 0)] = None
>>> echiquier[(0, 1)] = "Roi blanc"
>>> echiquier
{(0, 0): None, (5, 1): 'Roi noir', (0, 1): 'Roi blanc'}
Suppression d'un couple Clé :valeur
- On peut supprimer une clé et sa valeur avec
del
:
>>> mon_dictionnaire = { "nom": "Dupont", "prénom": "Jean","age": 30 }
>>> del mon_dictionnaire["prénom"]
>>> mon_dictionnaire
{'nom': 'Dupont', 'age': 30}
- Si la clé n'existe pas dans le dictionnaire, une
KeyError
sera levée. Pour éviter cela, on peut utiliser la méthodepop()
avec un argument optionnel pour retourner la valeur par défaut en cas d'absence de la clé.
>>> valeur_supprimee = mon_dictionnaire.pop("prénom", None)
Dans cet exemple, valeur_supprimee contiendra la valeur de la clé "prénom" si elle existe, sinon None.
Exercices
Activité 1 - QCM
On considÚre le dictionnaire ci-dessous décrivant une liste de courses :
courses = {
"pommes": 1.5,
"huile": "une bouteille d'huile d'olive",
"légumes" : {"poireaux": (1, "kg"), "potimarron": (5, "unité")}
}
Cochez la ou les bonnes réponses :
- Le dictionnaire
courses
contient cinq couples(clé: valeur)
-
"huile"
est une clé -
"légumes"
est une valeur -
courses[1.5]
vaut"pommes"
- On accÚde à la quantité de poireaux en faisant
courses["poireaux"][0]
- Le dictionnaire
courses
ne contient que trois clés :"pommes"
,"huile"
et"légumes"
-
"huile"
est une clé -
"légumes"
est une clé -
courses[1.5]
lĂšve une erreur car1.5
n'est pas une clé - On accÚde à la quantité de poireaux en faisant
courses["légumes"]["poireaux"][0]
Activité 2 - Départements
On fournit ci-dessous le dictionnaire dont les clĂ©s sont les noms des dĂ©partements français et les valeurs, la superficie en kmÂČ de chacun d'eux.
departements = {
"Ain": 5762,
"Aisne": 7362,
...
"Guyane": 83534,
"La RĂ©union": 2504,
}
Ces valeurs sont déjà chargées en mémoire et n'apparaissent donc pas dans l'éditeur.
Il est possible de parcourir les dictionnaires afin de créer des listes en compréhension. Par exemple [departements[nom] for nom in departements]
renvoie la liste contenant la surface de chaque département.
ComplĂ©ter le code ci-dessous afin d'effectuer les requĂȘtes demandĂ©es. L'ordre des rĂ©sultat au sein de chaque liste n'est pas important.
# Tests
(insensible Ă la casse)(Ctrl+I)