Dictionnaires

En Python, un dictionnaire est une structure de données qui, comme une liste, contient plusieurs éléments, mais plus puissant. Dans une liste les indices sont des entiers. Dans un dictionnaire les indices peuvent être de n’importe quel type immuable (entier, nombre, texte, tuple, …).

La fonction dict crée un dictionnaire vide. On pourrait aussi le créer avec une paire d’accolades {}.

Mémoire associative

Un dictionnaire associe une série de clés à une autre série de valeurs. Cette structure est aussi appelée

  • mémoire associative

  • table de hachage

Ce type de structures de données est standard dans les langages récentes (JavaScript, Python, Ruby) mais absent les langages plus anciens (C, Fortran).

Un pair key:value

Un dictionnaire est un ensemble de pairs key:value (clé:valeur) qui sont séparé par un deux-points(:). Un dictionnaire est un ensemble ayant la forme {k:v, k1:v1, ...}

Voici un exemple d’un dictionnaire avec deux entrées.

Exercice: ajoutez une paire clé:valeur supplémentaire.

Un autre exemple pour un dictionnaire est la table du code Morse

Exercice: ajoutez le code pour 3 lettres en plus.

Un dictionnaire est représenté par ceci:

  • il est délimité par des accolades ({})

  • ses éléments sont séparés par des virgules (,)

  • chaque élément est une paire clé:valeur, où la clé vient en premier, séparée de la valeur associée par un deux-points (:)

Accéder par une clé

Pour récupérer la valeur associée à une clé, nous utilisons la clé entre crochets ([]) — de façon similaire à ce que nous avions fait avec les index des éléments d’une liste.

De nouveaux éléments peuvent être ajoutés dans n’importer quel ordre avec l’expression d[key]=value

Avec la fonction len, nous trouvons la taille du dictionnaire, c’est-à-dire le nombre de paires clé-valeur qu’il contient.

Exercice: Ajoutez une paire et vérifiez la nouvelle longueur du dictionnaire.

Avec l’opérateur spécial in, on peut tester si une clé donnée fait partie du dictionnaire.

Attention, le test est fait avec les clés, et non pas avec les valeurs.

Compter (histogramme)

Un dictionnaire est une structure idéale pour compter les éléments appartenant à différentes catégories. Par exemple si nous voulons compter l’apparence de chaque lettre dans un texte nous pouvons utiliser un dictionnaire.

On appelle cette structure aussi un histogramme. Il nous montre que

  • la lettre d apparait une fois,

  • la lettre i apparait trois fois.

Si nous accédons à une clé qui n’existe pas dans le dictionnaire, nous obtenons une erreur du type KeyError.

La fonction get permet d’obtenir une valeur par défaut, si la clé n’existe pas encore dans_ le dictionnaire. Par exemple la lettre b n’est pas une clé du dictionnaire. La fonction retourne alors sa valeur par défaut qui est 0.

d.get('b', 0)

Ceci nous permet de raccourcir le programme de l’histogramme encore plus.

Itération sur les clés

Nous pouvons itérer sur les clés d’un dictionnaire.

Transformer un dictionnaire en liste nous retourne une liste de ses clés.

La fonction sorted nous retourne une liste de ses clés, triée.

List et ensemble des valeurs

La méthode values retourne toutes les valeurs.

Nous pouvons les transformer en liste ordinaire.

Nous pouvons également la transformer en ensemble et éliminer les doublons.

Inverser un dictionnaire

Toutes les clés d’un dictionnaire sont uniques. Par contre, il est tout à fait possible d’avoir plusieurs valeurs qui sont identiques. Si nous inversons un dictionnaire, une valeur peut correspondre à plusieurs clés, ce que nous pouvons alors stocker dans une liste.