Les dictionnaires
Un dictionnaire est un conteneur, un objet pouvant en contenir d’autres (à l’instar des listes) : chaque élément (item) d’un dictionnaire, est constitué d’une valeur (value) et associé à une clef (key).
Les valeurs peuvent être de n’importe quel type.
Les clés doivent être définie dans un type de donnée immuable (immutable) : chaîne de caractères ou nombre, ou bien encore un tuple de ces types.
Exemple : le dictionnaire ci dessous possède 3 éléments, dont les clés sont des chaînes de caractères pour deux d’entre eux, et un entier pour l’autre.
Création d’un dictionnaire
On peut créer un dictionnaire vide :
D = {}
Ou bien créer un dictionnaire contenant déjà des éléments :
>>> D = {'clef1' : 1.56, 'a' : "Bonjour", 5 : 5} >>> D {'a': 'Bonjour', 'clef1': 1.56, 5: 5}
Remarque : à la différence des listes, un dictionnaire n’est pas ordonné. Lorsqu’on affiche un dictionnaire, l’ordre n’est pas forcément celui de la création.
Accéder aux éléments d’un dictionnaire
La syntaxe est proche de celle utilisée pour obtenir des éléments d’une liste :
>>> D['a'] 'Bonjour'
Et comme pour les listes également, il est possible de modifier la valeur d’un élément :
>>> D['a'] = "Au revoir !" >>> D {'a': 'Au revoir !', 'clef1': 1.56, 5: 5}
On peut obtenir l’ensemble de ses clés avec la méthode .keys()
:
>>> D.keys() dict_keys(['a', 'clef1', 5])
L’ensemble de ses valeurs avec la méthode .values()
:
>>> D.values() dict_values(['Au revoir !', 1.56, 5])
Et l’ensemble de ses éléments, sous la forme de tuples (clé, valeur), avec la méthode .items()
:
>>> D.items() dict_items([('a', 'Au revoir !'), ('clef1', 1.56), (5, 5)])
Tests sur les dictionnaires
Pour savoir si un dictionnaire possède un élément, on peut tester s’il possède une clé :
>>> 'a' in D.keys() True
Mais il existe un expression plus simple :
>>> 'a' in D True
Et on peut bien sûr utiliser le mot clé in pour d’autres types de tests :
>>> 3 in D.values() False
Taille d’un dictionnaire
>>> len(D) 3
Ajout d’éléments
Et on peut ajouter des éléments directement :
>>> dico[421] = "Gagné !" >>> dico {'a': 'Au revoir !', 'clef1': 1.56, 5: 5, 421 : "Gagné !"}
La clé 421
est automatiquement créée.
Créer un dictionnaire par compréhension
Comme pour les listes, il est possible de construire un dictionnaire par compréhension :
>>> Simpson = ['Homer', 'Marge', 'Bart', 'Lisa'] >>> Famille = ['père', 'mère', 'fils', 'fille'] >>> Famille_Simpson = zip(Famille, Simpson) # zippage ! >>> Famille_Simpson = {clef: valeur for clef, valeur in Famille_Simpson} {'fils': 'Bart ', 'fille': 'Lisa ', 'mère': 'Marge ', 'père': 'Homer'}
Fusion de deux dictionnaires
On peut fusionner un dictionnaire avec un autre. On parle aussi de mise à jour :
>>> Enfants_Simpson = {'fils': 'Bart', 'fille': 'Lisa', 'bébé': 'Maggie'} >>> Famille_Simpson.update(Enfants_Simpson) >>> Famille_Simpson {'fils': 'Bart', 'fille': 'Lisa', 'bébé': 'Maggie', 'mère': 'Marge', 'père': 'Homer'}
Activités
Écrire une fonction compterLettres(texte)
ayant pour argument une chaîne de caractères et qui renvoie un dictionnaire qui contient la fréquence de toutes les lettres de la chaîne entrée.
Indice pour ne compter que les lettres, utiliser la fonction isalpha
Exemple : compterLettres("L'informatique, c'est fantastique !")
→ {'L': 1, 'I': 3, 'N': 2, 'F': 2, 'O': 1, 'R': 1, 'M': 1, 'A': 3, 'T': 4, 'Q': 2, 'U': 2, 'E': 3, 'C': 1, 'S': 2}