Le cours accéléré Python est gratuit et sera publié ici sur dev.to. Je publierai un nouvel article tous les deux jours environ. Pour ne rien manquer, vous pouvez me suivre sur twitter : Suivez @EricLeCodeur
Type de variable : Dictionnaires
Les dictionnaires permettent de stocker plusieurs items dans une seule variable sous le format clé/valeur.
Un dictionnaire est très semblable à une List mais au lieu d'utiliser des index, on utilise des clés.
Par exemple, parfois nous aurions besoin d’une liste d’étudiant avec leur no, leur nom et leur âge. Pour ce faire nous pourrions utiliser une variable de type List que nous venons justement d’apprendre :
student = ["1020", "Mike Taylor", 17]
print(student)
# ["1020", "Mike Taylor", 17]
Quoique cet exemple soit fonctionnel, il serait beaucoup plus simple et efficace si notre No d’étudiant pouvait être la clé d’accès.
Voici un exemple du résultat désirez. C’est-à-dire accéder à l’information à partir d’un nom de clé.
print(student["no"])
# 1020
print(student["name"])
# Mike Taylor
print(student["age"])
# 17
Ce type de liste avec une clé personnalisée existe en Python sous le nom de Dictionary.
Créer un Dictionary
Voici comment déclarer un Dictionary on utilisant les accolades { }
student = {
"no": 1020,
"name": "Mike Taylor",
"age": 17
}
La structure d’un Dictionary est sous forme de clé/valeur. La syntaxe est la suivante : “nom de la clé”: valeur
"no": 1020
Chaque clé/valeur est séparée par une virgule.
student = {
"no": 1020,
"name": "Mike Taylor",
"age": 17
}
Récupération
La récupération peut s’effectuer directement ou avec la fonction get()
Directement :
print(student["no"])
# KeyError: 'num'
Si la clé n’existe pas, la syntaxe directe retourne une erreur “KeyError: 'num’” et du coup arrête l’exécution du code
Fonction get()
print(student.get("num"))
# None
Si la clé n’existe pas, la fonction get() retourne la valeur “None” du coup le code continu son exécution.
Avec la fonction get() il est possible de retourner une valeur par défaut si la clé n’existe pas.
print(student.get("num", "no key"))
# no key
Ajouter une clé/valeur
Pour ajouter une clé/valeur il suffit d’assigner :
student = {
"no": 1020,
"name": "Mike Taylor",
"age": 17
}
student["city"] = "Paris"
print(student)
# {'no': 1020, 'name': 'Mike Taylor', 'age': 17, 'city': 'New York'}
Effacer une clé/valeur
Pour effacer une clé/valeur du dictionnaire. Il suffit d'utiliser le mot-clé "del"
student = {
"no": 1020,
"name": "Mike Taylor",
"age": 17
}
del student["age"]
print(student)
#{'no': 1020, 'name': 'Mike Taylor'}
Boucle dans les items d’un Dictionary
Comme pour une List, il est possible de faire une boucle dans un Dictionary. Le seul truc c’est qu’il faut identifier à l’avance sur quoi nous voulons faire la boucle. Les clés ? Les valeurs ? Les deux ?
Boucle sur les clés. Pour ce faire il faut utiliser la fonction keys(). Cette fonction retourne une liste de toutes les clés du Dictionary
student = {
"no": 1020,
"name": "Mike Taylor",
"age": 17
}
print(student.keys())
# dict_keys(['no', 'name', 'age'])
Il sera donc possible de faire une boucle sur cette liste
student = {
"no": 1020,
"name": "Mike Taylor",
"age": 17
}
for key in student.keys():
print(key)
# no
# name
# age
Boucle sur les valeurs. Même principe que pour les clés. Sauf cette fois il faut utiliser la fonction .values()
student = {
"no": 1020,
"name": "Mike Taylor",
"age": 17
}
for value in student.values():
print(value)
# 1020
# Mike Taylor
# 17
Boucle sur clé et valeurs. Il faut utiliser la fonction items() qui fait deux retours soit la clé et la valeur.
student = {
"no": 1020,
"name": "Mike Taylor",
"age": 17
}
for key, value in student.items():
print(key, value)
# no 1020
# name Mike Taylor
# age 17
List de Dictionary
Un pattern très populaire est de créer une List de Dictionary. Ce pattern ressemble beaucoup à table dans une base de données.
La List représente chaque ligne de la table et le Dictionary représente les colonnes de la table.
products = [
{'id': 100, 'name': 'iPadPro'},
{'id': 200, 'name': 'iPhone 12'},
{'id': 300, 'name': 'Charger'},
]
print(products[0]['name']) # iPadPro
`
Conclusion
C'est tout pour aujourd'hui, je publierai un nouvel article tous les deux jours environ. Pour être sûr de ne rien rater vous pouvez me suivre sur twitter : Suivre @EricLeCodeur
Top comments (0)