Le dictionnaire¶
Un dictionnaire (dictionnary ou, en abrégé en Python, dict) est une
collection qui associe une clé à une valeur. Par exemple, il est possible
d’associer la clé "nom"
à un nom et la clé "prenom"
à un prénom.
Prudence
Pour qu’une donnée puisse être utilisée comme une clé dans un dictionnaire, il faut qu’elle puisse produire une valeur de hachage (hash en anglais). Il s’agit d’une valeur numérique qui permet d’identifier la clé sans forcément lui être unique. Par défaut en Python, les nombres, les chaînes de caractères et les valeurs booléennes peuvent produire une valeur de hachage. Ils peuvent donc être utilisés comme clé dans un dictionnaire. On peut aussi utiliser comme clé un tuple d’éléments produisant une valeur de hachage.
Créer un dictionnaire¶
Pour créer un dictionnaire, on associe une clé à une valeur en les séparant par
:
, le tout entre accolades {}
:
mon_dict = {"nom": "Gayerie", "prenom": "David"}
Accéder aux éléments¶
Pour accéder à un élément d’une liste, il faut utiliser les crochets et préciser la valeur de la clé.
mon_dict = {"nom": "Gayerie", "prenom": "David"}
nom = mon_dict["nom"]
prenom = mon_dict["prenom"]
Attention, si un programme veut accéder à une valeur à partir d’une clé qui
n’existe pas, l’erreur KeyError
est produite.
>>> mon_dict = {"nom": "Gayerie", "prenom": "David"}
>>> surnom = mon_dict["surnom"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'surnom'
Il est possible de changer la valeur pour une clé donnée ou ajouter une nouvelle valeur pour une nouvelle clé :
mon_dict = {"nom": "Gayerie", "prenom": "Eric"}
mon_dict["prenom"] = "David"
mon_dict["surnom"] = "Spoonless"
print(mon_dict)
# affiche {'nom': 'Gayerie', 'prenom': 'David', 'surnom': 'Spoonless'}
Les opérations sur les dictionnaires¶
Connaître la taille d’un dictionnaire¶
Pour connaître le nombre de valeurs dans un dictionnaire, il faut utiliser la fonction
len()
(qui est la contraction de length) :
mon_dict = {"nom": "Gayerie", "prenom": "Eric"}
taille_dict = len(mon_dict)
print(taille_dict)
# affiche 2
Supprimer une clé d’un dictionnaire¶
Pour supprimer une clé dans un dictionnaire, on utilise le mot-clé del
:
mon_dict = {"nom": "Gayerie", "prenom": "Eric"}
del mon_dict["prenom"]
print(mon_dict)
# affiche {'nom': 'Gayerie'}
Savoir si une clé est présente dans un dictionnaire¶
Pour savoir si une clé est présente dans un dictionnaire, on peut utiliser le
mot-clé in
:
>>> mon_dict = {"nom": "Gayerie", "prenom": "David"}
>>> "nom" in mon_dict
True
>>> "surnom" in mon_dict
False
>>> "surnom" not in mon_dict
True
Comparer deux dictionnaires¶
On peut tester si deux dictionnaires sont ou non identiques.
>>> dict1 = {"nom": "Gayerie", "prenom": "Eric"}
>>> dict2 = {"nom": "Gayerie", "prenom": "David"}
>>> dict1 == dict2
False
>>> dict1 != dict2
True
Quelques méthodes pour les dictionnaires¶
get(key[, default])
Retourne la valeur associée à la clé fournie en paramètre. Cette méthode diffère de l’utilisation des crochets
[]
car elle retourne la valeur du paramètredefault
(par défautNone
) si la clé n’est pas présente dans le dictionnaire.dict = {"nom": "Gayerie", "prenom": "David"} print(dict.get("surnom")) # affiche None print(dict.get("surnom", "Pas de valeur")) # affiche Pas de valeur
clear()
Supprime tous les éléments du dictionnaire.
items()
Retourne une vue du dictionnaire sous la forme d’une séquence itérable de tuples contenant le couple clé, valeur. Les modifications réalisées sur la vue sont répercutées sur le dictionnaire.
dict = {"nom": "Gayerie", "prenom": "David"} vue_dict = dict.items(); print(vue_dict) # Affiche dict_items([('nom', 'Gayerie'), ('prenom', 'David')])
keys()
Retourne une vue du dictionnaire sous la forme d’une séquence itérable contenant les clés. Les modifications réalisées sur la vue sont répercutées sur le dictionnaire.
dict = {"nom": "Gayerie", "prenom": "David"} vue_dict = dict.keys(); print(vue_dict) # Affiche dict_keys(['nom', 'prenom'])
values()
Retourne une vue du dictionnaire sous la forme d’une séquence itérable contenant les valeurs. Les modifications réalisées sur la vue sont répercutées sur le dictionnaire.
dict = {"nom": "Gayerie", "prenom": "David"} vue_dict = dict.values(); print(vue_dict) # Affiche dict_values(['Gayerie', 'David'])
copy()
Crée une copie d’un dictionnaire.
Parcourir un dictionnaire avec for¶
Le dictionnaire est une structure de données très courante en Python. On peut peut parcourir un dictionnaire à partir de ses clés, de ses valeurs ou encore les deux à la fois :
civilite = {'M': 'Monsieur', 'Mme': 'Madame', 'Mlle': 'Mademoiselle'}
# On parcourt les clés du dictionnaire
for k in civilite.keys():
print(k)
# Par défaut, on parcourt les clés du dictionnaire
for k in civilite:
print(k)
# On parcourt les valeurs du dictionnaire
for v in civilite.values():
print(v)
# On parcourt les clés et les valeurs du dictionnaire
for k, v in civilite.items():
print(k, v)
Exercices¶
Exercice : QCM en invite de commande
On définit un QCM comme une liste de questions. Une question est un dictionnaire avec les clés :
- libelle
qui donne le libellé de la question.
- choix
qui est un tableau des différents choix de réponse.
- reponse
qui est un nombre correspondant à l’index du choix qui correspond à la bonne réponse.
Complétez le programme suivant :
qcm = [] # Le contenu du QCM à définir
def poser_question(question) :
"""Une fonction qui affiche la question,
les choix possibles de réponse et qui demande à
l'utilisateur son choix.
La fonction retourne ``True`` si l'utilisateur a choisi
la bonne réponse
"""
pass
score = 0
# on parcourt la liste des questions et on calcule le score de l'utilisateur
# ....
# on affiche le score
print("Vous avez obtenu un score de ", score)