• Aucun résultat trouvé

Là encore, je vous donne le nom de la classe sur laquelle se construit un dictionnaire : dict. Vous devriez du même coup trouver la première méthode d'instanciation d'un dictionnaire :

Code : Python Console

>>> mon_dictionnaire = dict() >>> type(mon_dictionnaire) <class 'dict'>

>>> mon_dictionnaire {}

>>> # Du coup, vous devriez trouver la deuxième manière de créer un dictionnaire vide

... mon_dictionnaire = {}

>>> mon_dictionnaire {}

>>>

Les parenthèses délimitent les tuples, les crochets délimitent les listes et les accolades {} délimitent les dictionnaires. Voyons comment ajouter des clés et valeurs dans notre dictionnaire vide :

Code : Python Console

>>> mon_dictionnaire = {}

>>> mon_dictionnaire["pseudo"] = "Prolixe" >>> mon_dictionnaire["mot de passe"] = "*" >>> mon_dictionnaire

{'mot de passe': '*', 'pseudo': 'Prolixe'} >>>

Nous indiquons entre crochets la clé à laquelle nous souhaitons accéder. Si la clé n'existe pas, elle est ajoutée au dictionnaire avec la valeur spécifiée après le signe =. Sinon, l'ancienne valeur à l'emplacement indiqué est remplacée par la nouvelle :

Code : Python Console

>>> mon_dictionnaire = {}

>>> mon_dictionnaire["pseudo"] = "Prolixe" >>> mon_dictionnaire["mot de passe"] = "*" >>> mon_dictionnaire["pseudo"] = "6pri1" >>> mon_dictionnaire

{'mot de passe': '*', 'pseudo': '6pri1'} >>>

La valeur 'Prolixe' pointée par la clé 'pseudo' a été remplacée, à la ligne 4, par la valeur '6pri1'. Cela devrait vous rappeler la création de variables : si la variable n'existe pas, elle est créée, sinon elle est remplacée par la nouvelle valeur. Pour accéder à la valeur d'une clé précise, c'est très simple :

Code : Python Console

>>> mon_dictionnaire["mot de passe"] '*'

>>>

Si la clé n'existe pas dans le dictionnaire, une exception de type KeyError sera levée.

Généralisons un peu tout cela : nous avons des dictionnaires, qui peuvent contenir d'autres objets. On place ces objets et on y accède grâce à des clés. Un dictionnaire ne peut naturellement pas contenir deux clés identiques (comme on l'a vu, la seconde valeur écrase la première). En revanche, rien n'empêche d'avoir deux valeurs identiques dans le dictionnaire.

Nous avons utilisé ici, pour nos clés et nos valeurs, des chaînes de caractères. Ce n'est absolument pas obligatoire. Comme avec les listes, vous pouvez utiliser des entiers comme clés :

Code : Python Console

>>> mon_dictionnaire = {} >>> mon_dictionnaire[0] = "a" >>> mon_dictionnaire[1] = "e" >>> mon_dictionnaire[2] = "i" >>> mon_dictionnaire[3] = "o" >>> mon_dictionnaire[4] = "u" >>> mon_dictionnaire[5] = "y" >>> mon_dictionnaire

{0: 'a', 1: 'e', 2: 'i', 3: 'o', 4: 'u', 5: 'y'} >>>

On a l'impression de recréer le fonctionnement d'une liste mais ce n'est pas le cas : rappelez-vous qu'un dictionnaire n'a pas de structure ordonnée. Si vous supprimez par exemple l'indice 2, le dictionnaire, contrairement aux listes, ne va pas décaler toutes les clés d'indice supérieur à l'indice supprimé. Il n'a pas été conçu pour.

On peut utiliser quasiment tous les types comme clés et on peut utiliser absolument tous les types comme valeurs.

Voici un exemple un peu plus atypique de clés : on souhaite représenter un plateau d'échecs. Traditionnellement, on représente une case de l'échiquier par une lettre (de A à H) suivie d'un chiffre (de 1 à 8). La lettre définit la colonne et le chiffre définit la ligne. Si vous n'êtes pas sûrs de comprendre, regardez la figure suivante.

Pourquoi ne pas faire un dictionnaire dont les clés seront des tuples contenant la lettre et le chiffre identifiant la case, auxquelles on associe comme valeurs le nom des pièces ?

Code : Python

echiquier = {}

echiquier['a', 1] = "tour blanche" # En bas à gauche de l'échiquier

echiquier['b', 1] = "cavalier blanc" # À droite de la tour

echiquier['c', 1] = "fou blanc" # À droite du cavalier

echiquier['d', 1] = "reine blanche" # À droite du fou

# ... Première ligne des blancs

echiquier['a', 2] = "pion blanc" # Devant la tour

echiquier['b', 2] = "pion blanc" # Devant le cavalier, à droite du

pion

# ... Seconde ligne des blancs

Dans cet exemple, nos tuples sont sous-entendus. On ne les place pas entre parenthèses. Python comprend qu'on veut créer des tuples, ce qui est bien, mais l'important est que vous le compreniez bien aussi. Certains cours encouragent à toujours placer des parenthèses autour des tuples quand on les utilise. Pour ma part, je pense que, si vous gardez à l'esprit qu'il s'agit de tuples, que vous n'avez aucune peine à l'identifier, cela suffit. Si vous faites la confusion, mettez des parenthèses autour des tuples en toutes circonstances.

On peut aussi créer des dictionnaires déjà remplis : Code : Python

placard = {"chemise":3, "pantalon":6, "tee-shirt":7}

On précise entre accolades la clé, le signe deux points « : » et la valeur correspondante. On sépare les différents couples clé : valeur par une virgule. C'est d'ailleurs comme cela que Python vous affiche un dictionnaire quand vous le lui demandez. Certains ont peut-être essayé de créer des dictionnaires déjà remplis avant que je ne montre comment faire. Une petite précision, si vous avez tapé une instruction similaire à :

Code : Python

Avec une telle instruction, ce n'est pas un dictionnaire que vous créez, mais un set.

Un set (ensemble) est un objet conteneur (lui aussi), très semblable aux listes sauf qu'il ne peut contenir deux objets identiques. Vous ne pouvez pas trouver deux fois dans un set l'entier 3 par exemple. Je vous laisse vous renseigner sur les sets si vous le désirez.

Documents relatifs