Dans les séquences, chaînes ou listes, les valeurs sont indexées par des entiers positifs en commençant par 0.

C’est le cas aussi pour les dictionnaires, mais en plus, les clés, objets immodifiables, indexent les valeurs qui y sont attachées. Ces valeurs sont évidemment modifiables.

Un dictionnaire vide :

>>> dico_01 = dict ()
>>> type (dico_01)
<class 'dict'>
>>> dico_01
{}
>>> 

La chaîne est entourée de guillemets simples ou doubles, la liste entourée de crochets, le tuple, de parenthèses et le dictionnaire est entouré d’accolades.

Evidemment :

>>> dico_02 = {}
>>> type (dico_02)
<class 'dict'>
>>>

Dans mon dictionnaire vide dico_02, je vais créer des clés et leur assigner des valeur :

>>> dico_02 = {}
>>> type (dico_02)
<class 'dict'>
>>> dico_02["cle_01"] = "porte_entrée"
>>> dico_02
{'cle_01': 'porte_entrée'}
>>> dico_02["cle_02"] = "porte_garage"
>>> dico_02
{'cle_01': 'porte_entrée', 'cle_02': 'porte_garage'}
>>>

Je remplace la valeur d’une clé :

>>> dico_02["cle_02"] = "porte_salon"
>>> dico_02
{'cle_01': 'porte_entrée', 'cle_02': 'porte_salon'}
>>>

Quelle est la valeur d’une clé ?

>>> dico_02["cle_01"]
'porte_entrée'
>>>

Remarque : deux clés identiques sont impossibles, par contre deux valeurs identiques, c’est possible !

>>> dico_02["cle_03"] = "porte_salon"
>>> dico_02
{'cle_03': 'porte_salon', 'cle_01': 'porte_entrée', 'cle_02': 'porte_salon'}
>>> 

Petit script d’application :

couleurs = ["rouge","bleu","vert","orange","noir","blanc"]
dico_couleurs = {}
num_couleur = 0
for item in couleurs :
    dico_couleurs["couleur "+str(num_couleur)]= item
    num_couleur = num_couleur + 1
print (dico_couleurs)

Exécution n°1 :

>>> 
{'couleur 3': 'orange', 'couleur 4': 'noir', 'couleur 1': 'bleu', 'couleur 5': 'blanc', 'couleur 2': 'vert', 'couleur 0': 'rouge'}
>>> 

Exécution n°2 :

>>> 
{'couleur 3': 'orange', 'couleur 5': 'blanc', 'couleur 1': 'bleu', 'couleur 4': 'noir', 'couleur 2': 'vert', 'couleur 0': 'rouge'}
>>>

Vous remarquerez que le résultat n’est pas donné dans l’ordre! Si cela arrive, c’est un hasard !

Les clés peuvent être des nombres, des chaînes ou des tuples donc non modifiables.

Les valeurs, ce que l’on veut !

>>> dicoLettres = {"Voyelles":["a","e","i","o","u","y"],"Consonnes":["b","c","d","f","g","h"]}
>>> dicoLettres
{'Consonnes': ['b', 'c', 'd', 'f', 'g', 'h'], 'Voyelles': ['a', 'e', 'i', 'o', 'u', 'y']}
>>>

Un exemple un peu spécial de dictionnaire pour représenter les cases d’un jeu de dames sur lesquelles se trouvent les pions blancs et noirs :

>>> damier = {}
>>> damier["a",2]= "blanc"
>>> damier["d",6]= "noir"
>>> damier
{('a', 2): 'blanc', ('d', 6): 'noir'}
>>> damier[("a",8)]= "blanc"
>>> damier
{('a', 2): 'blanc', ('d', 6): 'noir', ('a', 8): 'blanc'}
>>>

Pour ce qui est des cases a2 et d6, Python a tout de suite repéré qu’il s’agissait de tuples ! C’est pour cela que pour la case a8, les parenthèses, dans la déclaration, n’étaient pas obligatoires.

Supprimer des clés dans un dictionnaire :

>>> epicerie ={"tomates":5,"cerises":45,"poires":8,"oranges":23}
>>> epicerie
{'cerises': 45, 'poires': 8, 'oranges': 23, 'tomates': 5}
>>> del epicerie["tomates"]
>>> epicerie
{'cerises': 45, 'poires': 8, 'oranges': 23}
>>> epicerie.pop("poires")
8
>>> epicerie
{'cerises': 45, 'oranges': 23}
>>>

Le mot-clé del enlève tout simplement la clé. La méthode pop supprime aussi la clé mais renvoie sa valeur !