Python : Manipulation des dictionnaires

Python : Manipulation des dictionnaires

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 :

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 :