Avant de revenir à votre premier programme Python, une petite digression est de rigueur car vous devez absolument connaître les dictionnaires, les tuples et les listes (tout
ça !). Si vous être un programmeur Perl, vous pouvez probablement passer rapidemment sur les points concernant les dictionnaires et les listes mais vous devrez quand
même faire attention aux tuples.
Un des types de données fondamentaux de
Python est le dictionnaire, qui défini une
relation 1 à 1 entre des clés et des valeurs.
En Python, un dictionnaire est comme
une table de hachage en Perl. En
Perl, les variables qui stockent des tables
de hachage débutent toujours par le caractère %. En
Python vous pouvez nommer votre variable
comme bon vous semble et Python se chargera
de la gestion du typage.
Un dictionnaire Python est similaire
à une instance de la classe Hashtable en
Java.
Un dictionnaire Python est similaire
à une instance de l'objet Scripting.Dictionnary
en Visual Basic.
3.1.1. Définition des dictionnaires
Exemple 3.1. Définition d'un dictionnaire
>>> d = {"server":"mpilgrim", "database":"master"}>>> d{'server': 'mpilgrim', 'database': 'master'}>>> d["server"]'mpilgrim'>>> d["database"]'master'>>> d["mpilgrim"]Traceback (innermost last):
File "<interactive input>", line 1, in ?
KeyError: mpilgrim
D'abord, nous créons un nouveau dictionnaire avec deux
éléments que nous assignons à la variable d.
Chaque élément est une paire clé-valeur et l'ensemble complet des
éléments est entouré d'accolades.
'server' est une clé et sa valeur
associée, référencée par d["server"], est
'mpilgrim'.
'database' est une clé et sa valeur
associée, référencée par d["database"], est
'master'.
Vous pouvez obtenir les valeurs par clé, mais pas les clés à
partir de leur valeur. Donc d["server"] est
'mpilgrim', mais
d["mpilgrim"] déclenche une exception car
'mpilgrim' n'est pas une clé.
Vous ne pouvez avoir de clés dupliquées dans un dictionnaire.
L'assignation d'une valeur à une clé existante a pour effet
d'effacer l'ancienne valeur.
Vous pouvez ajouter de nouvelles paires clé-valeur à tout
moment. La syntaxe est identique à celle utilisée pour modifier les
valeurs existantes. (Oui, cela vous posera problème si vous essayez
d'ajouter de nouvelles valeurs alors que vous ne faites que modifier
constamment la même valeur parce que votre clé n'a pas changé de la
manière que vous espériez)
Notez que le nouvel élément (clé 'uid', valeur
'sa') à l'air d'être au milieu. En fait c'est par
coïncidence que les éléments avaient l'air d'être dans l'ordre dans le
premier exemple, c'est tout autant une coïncidence qu'ils aient l'air
dans le désordre maintenant.
Les dictionnaires ne sont liés à aucun concept d'ordonnancement
des éléments. Il est incorrect de dire que les élément sont
«dans le désordre», il ne sont tout simplement pas
ordonnés. C'est une distinction importante qui vous ennuiera lorsque
vous souhaiterez accéder aux éléments d'un dictionnaire d'une façon
spécifique et reproductible (par exemple par ordre alphabétique des
clés). C'est possible, mais cette fonctionalite n'est pas integrée
au dictionnaire.
Quand vous utilisez des dictionnaires, vous devez garder à l'esprit le fait que les clés sont sensibles à la casse.
Exemple 3.3. Les clés des dictionnaires sont sensibles à la casse
Assigner une valeur a une clé existante remplace l'ancienne valeur par la nouvelle.
Ici la valeur n'est pas assignée à une clé existante parce que les chaînes en Python sont sensibles à la casse, donc 'key' n'est pas la même chose que 'Key'. Une nouvelle paire clé/valeur est donc créée dans le dictionnaire, elle peut vous sembler similaire à la précédente, mais
pour Python elle est complètement différente.
Exemple 3.4. Mélange de types de données dans un dictionnaire
Les dictionnaires ne servent pas uniquement aux chaînes de
caractères. Les valeurs d'un dictionnaire peuvent être de n'importe
quel type de données, y compris des chaînes, des entiers, des
objets et même d'autres dictionnaires. Au sein d'un même
dictionnaire les valeurs ne sont pas forcémment d'un même type,
vous pouvez les mélanger à votre guise.
Les clés d'un dictionnaire sont plus restrictives, mais elles
peuvent être des chaînes, des entiers et de quelques autres types
encore (nous verrons cela en détail plus tard). Vous pouvez
également mélanger divers types de données au sein des clés d'un
dictionnaire.
3.1.3. Enlever des éléments d'un dictionnaire
Exemple 3.5. Enlever des éléments d'un dictionnaire