Les dictionnaires
Qu'est-ce qu'un dictionnaire ?
On peut voir les séquences comme permettant de stocker des paires indice-valeur.
Dans la liste L = ["ok", 3, 7.5], on accède aux éléments par leur indice. Ainsi, L[0] vaut "ok".
À l'indice 0 est associé la valeur "ok".
Un dictionnaire est une structure de données Python qui permet de stocker des paires clé-valeur. Ici, la clé n'est pas forcément un entier.
Son type Python est dict.
Tout comme les autres types de données que nous avons vus, son utilisation est très fréquente dans les langages de programmation. L'appellation 'dictionnaire' est cependant spécifique au langage Python. L'accès à des valeurs au moyen de clés existe dans de nombreux langages sous des noms différents. On parle aussi de tableau associatif ou de table de hachage. Ce type est absent des langages de programmation les plus anciens comme C ou Fortran.
Comment créer un dictionnaire ?
Pour créer un dictionnaire, on utilise des accolades {} et on sépare chaque paire clé-valeur par deux-points :.
ici:
- Les clés du dictionnaire sont les str
"nom","couleur", et"forme" - Les valeurs du dictionnaire sont les str
"pomme","rouge", et"ronde".
La clé "nom" fait référence à la valeur "pomme"
Un dictionnaire vide est créé ainsi :
Accéder aux éléments d'un dictionnaire
On peut accéder à la valeur associée à une clé en utilisant la syntaxe nom_du_dictionnaire[clé].
Modifier un dictionnaire
On peut modifier une valeur associée à une clé dans un dictionnaire. Un dictionnaire, comme une liste, est mutable.
Ajouter des éléments à un dictionnaire
On peut ajouter de nouvelles paires clé-valeur à un dictionnaire de la même façon.
Supprimer des éléments d'un dictionnaire
On peut supprimer une paire clé-valeur d'un dictionnaire en utilisant la méthode pop.
Méthodes incontournables pour les dictionnaires
Il existe plusieurs méthodes utiles pour travailler avec les dictionnaires (en particulier les parcourir):
keys(): Retourne l'itérable des clés du dictionnaire.values(): Retourne l'itérable des valeurs du dictionnaire.items(): Retourne l'itérable des tuples (clé, valeur) du dictionnaire.
Ces méthodes servent généralement dans des boucles for afin de parcourir un dictionnaire.
print("Clés du dictionnaire :", mon_dictionnaire.keys())
print("Valeurs du dictionnaire :", mon_dictionnaire.values())
print("Paires clé-valeur du dictionnaire :", mon_dictionnaire.items())
Parcourir un dictionnaire
Attention, quand on parcourt un dictionnaire, il ne faut jamais s'attendre à ce que l'ordre d'insertion soit conservé. C'est rare selon les langages. c'est le cas en python, mais on ne peut pas apprendre à programmer uniquement en python.
Par clés
En conséquence, on peut parcourir les clés, les valeurs ou les paires clé-valeur d'un dictionnaire à l'aide de boucles.
Note: Dans une boucle for, keys est l'itérable par défaut du dictionnaire. Ainsi les 2 lignes suivantes sont équivalentes:
for cle in mon_dictionnaire.keys():for cle in mon_dictionnaire:
Par couple clés/valeurs
On peut aussi parcourir le dictionnaire en récupérant à la fois la clé et sa valeur associée :
Par valeurs
On peut aussi parcourir le dictionnaire en récupérant à la fois la clé et sa valeur associée :
Vérifier si une clé est dans un dictionnaire
On peut utiliser l'opérateur booléen in pour savoir si une clé est dans un dictionnaire.
Note: C'est un raccourci pour dire "pays" in mon_dictionnaire.keys()
Exercices
Entraînement
Les 20 premières questions servent à s'entraîner à utiliser les fonctionnalités de base d'un dictionnaire.
Une fois les exercices réussis, vous pouvez les effacer et les refaire plus tard afin de vous assurer de maîtriser la base.
L'ensemble des questions correspond à des situations communes et récurrentes.
Exercice 1
Créez un dictionnaire vide représentant les attributs d'un employé appelé employe1.
Exercice 2
Ajoutez des clés telles que "nom", "age", "poste" à votre dictionnaire employe1 et assignez-leur des valeurs appropriées.
Exercice 3
Affichez l'âge de l'employé dans le dictionnaire employe1.
Exercice 4
Modifiez le poste de l'employé dans le dictionnaire employe1.
Exercice 5
Supprimez l'âge de l'employé du dictionnaire employe1.
Exercice 6
Parcourez toutes les clés du dictionnaire employe1 et affichez-les.
Exercice 7
Parcourez toutes les valeurs du dictionnaire employe1 et affichez-les.
Exercice 8
Créez un dictionnaire représentant les attributs d'un fruit appelé fruit1, avec les clés "nom", "couleur", "quantite" et assignez-leur des valeurs appropriées.
Exercice 9
Modifiez la couleur du fruit dans le dictionnaire fruit1.
Exercice 10
Supprimez la quantité de fruits du dictionnaire fruit1.
Exercice 11
Parcourez toutes les paires clé-valeur du dictionnaire fruit1 et affichez-les.
Exercice 12
Créez un dictionnaire vide représentant les notes d'un élève appelé notes.
Exercice 13
Ajoutez des clés représentant les matières de l'étudiant avec leurs notes associées dans le dictionnaire notes.
Exercice 14
Créez une fonction moyenne(dico: dict[str, float]) -> float qui prend en paramètre un dictionnaire de notes et renvoie la moyenne des notes dans le dictionnaire.
Testez la fonction avec le dictionnaire notes.
Exemple :
Exercice 15
Trouvez la matière avec la note la plus élevée dans le dictionnaire notes.
Exercice 16
Vérifiez si la matière "NSI" est présente dans le dictionnaire notes.
Exercice 17
Supprimez une matière dans le dictionnaire notes.
Exercice 18
On considère la ville suivante :
| clé | valeur |
|---|---|
| nom | Montreal |
| pays | Canada |
| province | Quebec |
| pop | 1825208 |
| superficie | 315 |
- Créer un dictionnaire affecté à la variable
villecontenant les données ci-dessus. - Modifier la superficie, qui est fausse, en 365 km².
- Ajouter la densité qui est de 4992 habitants au kilomètre carré.
- Remplacer la clé "pop" par "population".
Exercice 19
On considère les données suivantes, enregistrées dans le dictionnaire repertoire :
| Nom | Téléphone |
|---|---|
| Ewen | 0612345678 |
| Marie | 0687654321 |
| Hanae | 0765432198 |
| Piotr | 0777666555 |
repertoire = {"Ewen": "0612345678",
"Marie": "0687654321",
"Hanae": "0765432198",
"Piotr": "0777666555"}
- Comment accéder au téléphone de Piotr ?
- Comment savoir si "Fanny" est enregistrée dans le répertoire ?
- Modifier le numéro d'Ewen, il se termine par un 9 et non un 8.
- Ajouter "Raoul" dont le numéro est "0789898989".
- Supprimer "Hanae" du répertoire.
- On souhaite obtenir l'annuaire inversé. C'est à dire un dictionnaire où on a échangé les clés et les valeurs. En parcourant le répertoire, créez l'annuaire inversé.
Exercice 20
Convertir les deux listes suivantes en un dictionnaire en utilisant une seule boucle for.
Le résultat doit être :
Note: On peut utiliser n'importe que type immuable comme clé de dictionnaire.
Exercice 21
Considérez la liste suivante :
employees = [
{'name': 'John', 'salary': 7500},
{'name': 'Emma', 'salary': 8000},
{'name': 'Brad', 'salary': 6500}
]
- Changez le salaire de Brad en 8500.
Sortie attendue :
[{'name': 'John', 'salary': 7500},
{'name': 'Emma', 'salary': 8000},
{'name': 'Brad', 'salary': 8500}]
-
À l'aide d'une boucle, calculez le cumul des salaires.
-
À l'aide d'une boucle, créez la liste des noms des employés.
Exercice 22
Nous allons apprendre à compter les lettres d'une chaîne de caractères.
Tout comme les algorithmes de minimum/maximum, cet algorithme est à connaître.
Voici la chaîne en question, utilisée fréquemment pour remplir des zones de texte lorsqu'on développe une interface graphique :
Nous allons produire un dictionnaire qui compte le nombre d'apparitions de chaque caractère dans la chaîne précédente.
Exemple de résultat attendu :
{' ': 7, 'i': 6, 'e': 5, 't': 5, 'o': 4, 's': 4, 'l': 3, 'r': 3, 'm': 3,
'c': 3, 'p': 2, 'u': 2, 'd': 2, 'a': 2, 'n': 2, 'g': 1}
Créez une fonction compteur(chaine: str) -> dict[str, int] que vous testerez avec plusieurs chaînes.
Essayez de trouver un moyen sans dévoiler l'indice dans un premier temps.
Indice
Il faut procéder par accumulation dans un dictionnaire.
Algorithme à suivre :
- Créer un dictionnaire vide
compteur = {} - Parcourir chaque caractère
charde la chaînes -
Pour chaque caractère :
- Si le caractère n'est pas dans le dictionnaire, l'ajouter avec la valeur 1
- Sinon, incrémenter sa valeur de 1