Dictionnaires en Python
Les Dictionnaires Python
Section titled “Les Dictionnaires Python”Les dictionnaires sont le type de mappage fondamental de Python. Ils stockent des collections de paires clé-valeur (key-value pairs), où chaque clé (key) doit être unique et immuable (immutable) (comme les chaînes de caractères (strings), les nombres ou les tuples (tuples) ne contenant que des éléments immuables). Les valeurs (values) peuvent être de n’importe quel type et peuvent être dupliquées.
Les dictionnaires sont définis à l’aide d’accolades {}. Un dictionnaire vide est {}. Les éléments sont séparés par des virgules, avec un deux-points : séparant chaque clé de sa valeur.
# Création de dictionnairesempty_dict = {}student = { 'name': 'Zara', 'age': 17, 'courses': ['Math', 'Physics']}config = dict(host='localhost', port=8080) # Alternative utilisant dict()Note importante : À partir de Python 3.7+, les dictionnaires standard conservent l’ordre d’insertion des éléments. Dans les versions antérieures (3.6 et inférieures), les dictionnaires étaient non ordonnés.
Accéder aux valeurs dans un dictionnaire
Section titled “Accéder aux valeurs dans un dictionnaire”Vous accédez à la valeur associée à une clé en utilisant la notation entre crochets [].
student = {'name': 'Zara', 'age': 17, 'class': 'First'}
print(f"Nom de l'étudiant : {student['name']}")print(f"Âge de l'étudiant : {student['age']}")Sortie :
Nom de l'étudiant : ZaraÂge de l'étudiant : 17Tenter d’accéder à une clé qui n’existe pas avec [] lèvera une KeyError.
student = {'name': 'Zara', 'age': 17}
# Ceci provoquera une erreur :# print(f"Note de l'étudiant : {student['grade']}")Pour accéder aux clés en toute sécurité, vous pouvez utiliser la méthode get(), qui renvoie None (ou une valeur par défaut spécifiée) si la clé n’est pas trouvée.
grade = student.get('grade') # Returns Nonedefault_grade = student.get('grade', 'N/A') # Returns 'N/A'print(f"Note (accès sécurisé) : {grade}")print(f"Note (avec valeur par défaut) : {default_grade}")Mettre à jour un dictionnaire
Section titled “Mettre à jour un dictionnaire”Vous pouvez ajouter de nouvelles paires clé-valeur ou modifier celles existantes en utilisant l’opérateur d’affectation = avec la notation entre crochets.
student = {'name': 'Zara', 'age': 17, 'class': 'First'}
# Mettre à jour une entrée existantestudent['age'] = 18
# Ajouter une nouvelle entréestudent['school'] = "Springfield High"student['contact'] = {'email': 'zara@example.com'} # Les valeurs peuvent être complexes
print(f"Âge mis à jour : {student['age']}")print(f"École : {student['school']}")print(f"Coordonnées : {student['contact']}")print(f"Dictionnaire complet : {student}")Sortie :
Âge mis à jour : 18École : Springfield HighCoordonnées : {'email': 'zara@example.com'}Dictionnaire complet : {'name': 'Zara', 'age': 18, 'class': 'First', 'school': 'Springfield High', 'contact': {'email': 'zara@example.com'}}Vous pouvez également fusionner des dictionnaires en utilisant la méthode update() ou l’opérateur de fusion | (Python 3.9+).
more_info = {'city': 'Shelbyville', 'age': 19} # Notez que 'age' se chevauchestudent.update(more_info) # Met à jour les clés existantes, ajoute les nouvellesprint(f"Après update() : {student}")
# Utilisation de l'opérateur de fusion (Python 3.9+)extra = {'country': 'USA'}merged_student = student | extraprint(f"Après merge | : {merged_student}")Supprimer des éléments de dictionnaire
Section titled “Supprimer des éléments de dictionnaire”Vous pouvez supprimer des paires clé-valeur individuelles, vider l’intégralité du dictionnaire ou supprimer l’objet dictionnaire lui-même.
student = {'name': 'Zara', 'age': 18, 'class': 'First', 'school': 'Springfield High'}
# Supprimer l'entrée avec la clé 'class' en utilisant deldel student['class']print(f"Après del student['class'] : {student}")
# Supprimer l'entrée avec la clé 'school' en utilisant pop() (renvoie la valeur)school = student.pop('school')print(f"École supprimée : {school}")print(f"Après pop('school') : {student}")
# Supprimer le dernier élément inséré (Python 3.7+)last_item = student.popitem()print(f"Dernier élément supprimé : {last_item}")print(f"Après popitem() : {student}")
# Supprimer toutes les entrées du dictionnairestudent.clear()print(f"Après clear() : {student}")
# Supprimer entièrement l'objet dictionnairedel student# print(student) # Ceci lèverait maintenant une NameErrorSortie (variera légèrement pour popitem en fonction de l’ordre d’insertion exact) :
Après del student['class'] : {'name': 'Zara', 'age': 18, 'school': 'Springfield High'}École supprimée : Springfield HighAprès pop('school') : {'name': 'Zara', 'age': 18}Dernier élément supprimé : ('age', 18)Après popitem() : {'name': 'Zara'}Après clear() : {}Propriétés des clés de dictionnaire
Section titled “Propriétés des clés de dictionnaire”Les clés de dictionnaire possèdent deux propriétés importantes :
- Les clés doivent être uniques : Un dictionnaire ne peut pas avoir de clés dupliquées. Si vous assignez une valeur à une clé existante, la valeur originale est écrasée.
- Les clés doivent être immuables : Les clés doivent être d’un type hachable (hashable). Cela inclut les nombres (int, float), les chaînes de caractères (strings), les booléens (booleans) et les tuples ne contenant que des éléments immuables. Les listes (lists), les dictionnaires ou les ensembles (sets) ne peuvent pas être utilisés comme clés car ils sont mutables (mutable) (leur contenu peut changer).
Exemple (Clés dupliquées) :
dict_dup = { 'name': 'Zara', 'age': 7, 'name': 'Manni' # Cette affectation écrase le 'name' précédent}
print(f"dict_dup['name'] : {dict_dup['name']}") # Sortie : ManniExemple (Clés immuables) :
# Clés validesvalid_keys = { 10: 'Number', 'user': 'Admin', (1, 2): 'Tuple Key', True: 'Boolean Key'}print(valid_keys)
# Clé invalide (la liste est mutable)# invalid_keys = {# ['list_key']: 'This will fail'# }# TypeError: type inhashable : 'list'Méthodes et opérations des dictionnaires
Section titled “Méthodes et opérations des dictionnaires”Les dictionnaires Python prennent en charge diverses fonctions et méthodes intégrées :
Fonctions courantes :
Section titled “Fonctions courantes :”| Fonction | Description |
|---|---|
len(dict) | Renvoie le nombre de paires clé-valeur (éléments) dans le dictionnaire. |
str(dict) | Renvoie une représentation textuelle imprimable du dictionnaire. |
type(variable) | Renvoie le type de la variable. S’il s’agit d’un dictionnaire, renvoie <class 'dict'>. |
Méthodes clés des dictionnaires :
Section titled “Méthodes clés des dictionnaires :”| Méthode | Description |
|---|---|
dict.clear() | Supprime tous les éléments du dictionnaire. |
dict.copy() | Renvoie une copie superficielle (shallow copy) du dictionnaire. |
dict.fromkeys(seq[, value]) | Crée un nouveau dictionnaire avec des clés provenant de seq et des valeurs définies à value (par défaut None). (Méthode de classe) |
dict.get(key[, default]) | Renvoie la valeur pour key si key est dans le dictionnaire, sinon default. Si default n’est pas fourni, il est par défaut None. |
dict.items() | Renvoie un objet vue (view object) affichant une liste de paires clé-valeur sous forme de tuples du dictionnaire. Les modifications apportées au dictionnaire sont reflétées dans la vue. |
dict.keys() | Renvoie un objet vue affichant une liste des clés du dictionnaire. Les modifications apportées au dictionnaire sont reflétées dans la vue. |
dict.values() | Renvoie un objet vue affichant une liste des valeurs du dictionnaire. Les modifications apportées au dictionnaire sont reflétées dans la vue. |
dict.pop(key[, default]) | Supprime la clé spécifiée et renvoie la valeur correspondante. Si la clé n’est pas trouvée, default est renvoyé si fourni, sinon une KeyError est levée. |
dict.popitem() | Supprime et renvoie la dernière paire clé-valeur insérée (sous forme de tuple). Lève une KeyError si le dictionnaire est vide. (Avant Python 3.7, supprimait une paire arbitraire). |
dict.setdefault(key[, default]) | Si key est dans le dictionnaire, renvoie sa valeur. Sinon, insère key avec une valeur de default et renvoie default. default est par défaut None. |
dict.update([other]) | Met à jour le dictionnaire avec les paires clé-valeur de other (un autre dictionnaire ou un itérable de paires clé-valeur), écrasant les clés existantes. |
Vérifier l’existence d’une clé :
Section titled “Vérifier l’existence d’une clé :”La manière préférée de vérifier si une clé existe est d’utiliser l’opérateur in :
student = {'name': 'Zara', 'age': 18}
if 'age' in student: print("La clé 'age' existe.")
if 'grade' not in student: print("La clé 'grade' n'existe pas.")Note : La méthode dict.has_key(key) utilisée dans Python 2 est obsolète et a été supprimée dans Python 3. Utilisez l’opérateur in à la place.
Compréhensions de dictionnaires (Dictionary Comprehensions)
Section titled “Compréhensions de dictionnaires (Dictionary Comprehensions)”Similaire aux compréhensions de listes (list comprehensions), vous pouvez créer des dictionnaires de manière concise :
squares = {x: x*x for x in range(1, 6)}# squares sera : {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}print(squares)