Archives Wild Code School
Python

2.5 Python - Dictionnaires

Quête 11 sur 66 · 2 images archivées

Introduction

Tout comme les listes, cette structure de données s'avère extrêmement utile !

Un dictionnaire comprend des clés (telles que "Alex", "Ben", etc.) auxquelles sont associées des valeurs (comme 5, 10, etc.).

Dans l'exemple suivant, nous avons 5 clés, chacune ayant une seule valeur attribuée.

Par exemple, la clé "Alex" renferme la valeur 5.

Objectifs

✅ Acquérir une compréhension du concept de dictionnaire ✅ Pratiquer la manipulation de dictionnaires

Sommaire

Les dictionnaires

L'image ci-dessus montre la différence essentielle qu'il y a entre les dictionnaires et les listes. Quand dans le cas de la liste on accède à un élément grâce à son index, dans le cas d'un dictionnaire on y accède grâce à sa clé. Le dictionnaire fonctionne donc comme un système clé-valeur.

python
# dictionnaire
>>> print(grades_dictionnary["John"])
"A"
# liste
>>> print(grades_list[0])
"A"

" Pourquoi utiliser une clé plutôt qu'une valeur numérique ? J'aimais bien cette option moi", me diras tu. Cela dépend de la situation. Je vais te donner un exemple pour illustrer l'intérêt du dictionnaire.

Imagine que tu veux ranger des données alimentaire par groupes, par exemple des catégories d'aliments (légumes, viandes, féculents...). Les ranger par numéro n'est pas le plus pratique, parce que tu vas avoir besoin d'un document faisant la correspondance entre les numéros pour te rappeler que 1 c'est pour les légumes, 2 pour les viandes, etc. Avec un dictionnaire tu indiqueras directement "viandes" et python te renverra tous les aliments de la catégorie demandée.

python
food_fridge_dict = {"viandes": ["boeuf", "lapin", "agneau"],
             "légumes": ["courgette", "aubergine", "oignon"]}

food_fridge_list = [["boeuf", "lapin", "agneau"], ["courgette", "aubergine", "oignon"]]

Quels sont les viandes disponible dans mon frigo ?

python
# simplement
>>> food_fridge_dict["viandes"]
["boeuf", "lapin", "agneau"]

# fastidieusement (encore plus quand la liste est longue)
>>> food_fridge_list[0]
["boeuf", "lapin", "agneau"]

Bref, comme tu l'as compris avec ce petit exemple, python te permet de faire différentes choses de différentes façons.

Tout comme une liste, un dictionnaire est une boîte. Il peut donc contenir tout ce qu'on veut. Il peut même avoir d'autres dictionnaires comme valeur ! Mais la clé sera toujours alphanumérique.

python
house_and_food_dict = {"nourriture": {"légumes": ["courgette", "aubergine", "oignon"],
                                      "viandes": ["boeuf", "lapin", "agneau"]},
                       "mobilier": {"chambre": ["lit", "bureau", "chaise"],
                                    "salon": ["télévision", "table", "bar"]}}
# Comment accéder à la liste de légumes ?
>>> house_and_food_dict["nourriture"]["légumes"]
["courgette", "aubergine", "oignon"]
# Comment accéder au mobilier de salon ?
>>> house_and_food_dict["mobilier"]["salon"]
["télévision", "table", "bar"]

hidden
Click to reveal |||python||| En manipulant le dictionnaire house_and_food_dict, comment accède tu à l'élément "bar" ? |||0|||Hide
house_and_food_dict["mobilier"]["salon"][2]

hidden
Click to reveal |||python||| Considérant un dictionnaire où chaque clé est associée à une liste de chaînes de caractères (strings) comme valeur, écrivez un code pour récupérer tous les éléments de ces listes qui commencent par la lettre 'C'. |||0|||Hide
# solution_1
for value in a_dict.values():
  for element in value:
    if element.startswith("C"):
      print(element)

# solution_2
for key, values in a_dict.items():
  for element in values:
    if element.startswith("C"):
      print(element)

# solution_3
[v for value in a_dict.values() for v in value if v.startswith("C")]

Les ressources t'aideront à en apprendre d'avantage. Après les avoir regardées, passe au challenge ;-)

↗
Machine Learnia : les dictionnaires
youtube.com
↗
5 Advanced Operations Using Dictionaries in Python
betterprogramming.pub
↗
Python dictionnaries - W3School
w3schools.com

Challenge

Dans ce challenge tu vas t'entraîner à manipuler des dictionnaires.

Crée une copie du notebook ci-après et réalise les missions qui s'y trouve : 2.5 Python - Dictionaries

Une fois réalisé, poste le lien vers ton notebook en commentaire pour validation, sans oublier de le rendre accessible en lecture pour toute personne disposant du lien.

Critères de validation

  • Le notebook est accessible en lecture pour toutes personnes disposant du lien
  • Les exercices ont été correctement codés

Proposition de solution

Dans ce notebook tu trouveras une solution au challenge. Ce n'est pas la seule possible, mais elle fonctionne !

Ressources partagées sur cette quête