Dictionnaires Python
I. Notions de dictionnaire⚓︎
1.1. Généralités⚓︎
Les dictionnaires (appelés aussi « tableaux associatifs » ou « tables de hachage ») permettent d'associer des valeurs à des clés.
A partir d'une clé, on peut alors accéder directement à la valeur qui lui est associée. On crée un dictionnaire en indiquant les couples clé / valeur entre accolade et séparés par des virgules :
mon_dico = {clé_1: valeur_1, clé_2: valeur_2, clé_3: valeur_3,...}
1.2. Propriétés⚓︎
- Les dictionnaires sont des conteneurs comme les listes et les tuples.
- Les dictionnaires sont mutables, c'est-à-dire que l'on peut modifier leur contenu.
- Les dictionnaires, par contre, ne sont pas des séquences comme les tuples et les listes : on ne peut pas accéder à leur contenu en donnant un indice.
- Dans un dictionnaire, les clés doivent être récursivement non mutables et chaque clé doit être unique.
- Les valeurs associées aux clés peuvent revêtir un type quelconque.
- Exemples de clés récursivement non mutables :
Une chaîne de caractères, un nombre, un tuple de nombres, un tuple de tuples de nombres.
En revanche, une liste ou un tuple contenant une liste ne sont pas des clés valides pour un dictionnaire.
II. Créer et utiliser un dictionnaire⚓︎
2.1. Initialiser et accéder aux éléments⚓︎
Les dictionnaires sont très utiles pour stocker par exemple des enregistrements , c'est-à-dire des données contenant plusieurs champs nommés, les clés étant souvent dans ce cas des chaînes de caractères.
🐍 Editeur | |
---|---|
2.2. Modifier un dictionnaire et parcourir tous ses éléments⚓︎
2.2.1. Ajouter un nouveau couple clé / valeur⚓︎
2.2.2. Modifier la valeur associée à une clé déjà présente⚓︎
2.2.3. Parcourir les clés⚓︎
2.2.4. Parcourir les valeurs⚓︎
2.2.5. Parcourir les couples clés/valeurs⚓︎
Remarque : dans ce cas, l'itération porte sur le tuple(cle, valeur)
.
III. Principales fonctions et méthodes⚓︎
Objectif : connaître quelques fonctions et méthodes s'appliquant sur des dictionnaires
3.1. La fonction len()
⚓︎
La fonction len()
permet de connaître le nombre d'items.
🐍 Editeur | |
---|---|
3.2. La méthode get()
⚓︎
La méthode get()
permet de renvoyer la valeur d'une clé présente.
🐍 Editeur | |
---|---|
3.3. La méthode setfefault(key, default_value)
⚓︎
La méthode setdefault(key, default_value)
renvoie :
- si la clé existe, sa valeur,
- si la clé n'existe pas, insère la clé avec la valeur
default_value
et renvoie sa valeur.
joueur = {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17, 'club': 'Montpellier TT'}
print(joueur.setdefault("rang", 8))
print(joueur)
3.4. La fonction del()
⚓︎
La fonction del()
permet de détruire une clé (et sa valeur associée).
joueur = {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17, 'club': 'Montpellier TT'}
del(joueur['club'])
print(joueur)
3.5. La méthode clear()
⚓︎
La méthode clear()
permet d'effacer toutes les données contenues dans un dictionnaire.
joueur = {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17, 'club': 'Montpellier TT'}
joueur.clear()
print(joueur)
3.6. La fonction dict()
⚓︎
La fonction dict()
permet de créer un dictionnaire.
3.7. La méthode update()
⚓︎
La méthode update()
permet de mettre à jour un dictionnaire existant avec les clés et les valeurs d'un autre dictionnaire ou d'une liste de paires clé-valeur.
La syntaxe est du type dictionnaire1.update(dictionnaire2)
où :
dictionnaire1
est le dictionnaire à mettre à jour.dictionnaire2
est le dictionnaire qui contient les nouvelles clés et valeurs.
# Créer un dictionnaire
dict1 = {"a": 1, "b": 2}
# Mettre à jour dict1 avec une liste de paires clé-valeur
dict1.update([("c", 3), ("d", 4)])
# Afficher le résultat
print(dict1)
IV. Test d'appartenance⚓︎
Objectif : tester la présence d'une clé
Pour déterminer si une clé spécifique est présente dans un dictionnaire, on utilise le mot clé in
(opérateur logique).
joueur = {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17, 'club': 'Montpellier TT'}
print('prenom' in joueur)
print('rang' in joueur)
V. Copie d'un dictionnaire⚓︎
Objectif : comprendre la notion de copie
Comme les listes, les dictionnaires sont des objets mutables, c'est-à-dire que leurs contenus peuvent changer.
⚠️ Des variables différentes peuvent référencer (ou pointer vers) les mêmes ojets. ⚠️
5.1. Notion de copie⚓︎
Comme avec les listes, on ne peut pas créer une copie d'un dictionnaire simplement en tapantdico2 = dicol
, car dico2
ne sera qu'une référence à dicol
et pas un objet indépendant. Ainsi, les modifications apportées dans dicol
seront automatiquement également apportées dans dico2
.
joueur1 = {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17}
joueur2 = joueur1
joueur1.clear()
print(joueur1, joueur2)
5.2. La méthode copy()
⚓︎
On peut créer une copie de dictionnaire avec la méthode copy()
.
Ainsi pour réaliser une copie de dicol
indépendante dans dico2
, c'est-à-dire, que cette fois-ci les modifications effectuées dans dicol
n'affectent pas le contenu de dico2
.
joueur1 = {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17}
joueur2 = joueur1.copy()
joueur1.clear()
print(joueur1, joueur2)
5.3. La fonction dict()
⚓︎
On peut aussi réaliser une copie de dictionnaire avec la fonction dict()
.
joueur1 = {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17}
joueur2 = dict(joueur1)
joueur1.clear()
print(joueur1, joueur2)
VI. Dictionnaire par compréhension⚓︎
Objectif : construire un dictionnaire par compréhension
Principe : Le principe est le même que pour les listes.
VII. Dictionnaire de dictionnaires⚓︎
Objectif : construire un dictionnaire de dictionnaires
7.1. Principe⚓︎
Un dictionnaire peut également contenir d'autres dictionnaires, c'est ce qu'on appelle alors des « dictionnaires imbriqués ».
joueur1 = {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17}
joueur2 = {'nom': 'LEBRUN', 'prenom': 'Alexis', 'age': 20}
joueur3 = {'nom': 'GAUZY', 'prenom': 'Simon', 'age': 29}
joueurs = {'joueur1': joueur1, 'joueur2': joueur2, 'joueur3': joueur3}
print(joueurs)
{'joueur1': {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17}, 'joueur2': {'nom': 'LEBRUN', 'prenom': 'Alexis', 'age': 20}, 'joueur3': {'nom': 'GAUZY', 'prenom': 'Simon', 'age': 29}}
7.2. Parcours des éléments⚓︎
Il est possible de parcourir tous les éléments d'un dictionnaire de dictionnaires en utilisant deux boucles for
imbriquées.
joueur1 = {'nom': 'LEBRUN', 'prenom': 'Félix', 'age': 17}
joueur2 = {'nom': 'LEBRUN', 'prenom': 'Alexis', 'age': 20}
joueur3 = {'nom': 'GAUZY', 'prenom': 'Simon', 'age': 29}
joueurs = {'joueur1': joueur1, 'joueur2': joueur2, 'joueur3': joueur3}
# Parcours du dictionnaire principal
for (cle, valeur) in joueurs.items():
# Parcours des dictionnaires imbriqués
for (sous_cle, sous_valeur) in valeur.items():
print(joueurs[cle][sous_cle])