2.5 Python - Dictionnaires
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.
# 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.
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 ?
# 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.
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"]
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]
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 ;-)
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
- ressources en françaishttps://python.doctor/page-apprendre-dictionnaire-python
- Pour la mission "random"https://www.w3schools.com/python/module_random.asp
- Ressource en français expliquant les différentes manières de trier un dictionnairehttps://quennec.fr/trucs-astuces/langages/python/python-trier-le-contenu-dun-dictionnaire-dict
- Ressources en françaishttps://allen-downey.developpez.com/livres/python/pensez-python/?page=dictionnaires#L11
- Bonne explication de ce qu'on peut faire avec les dictionnaireshttps://www.w3schools.com/python/python_dictionaries.asp
- Pour la mission 6https://datatofish.com/dictionary-values-as-list/