En python, un dictionnaire est une structure de données associant deux objets : une clé et sa valeur.
On peut se le représenter comme un tableau dont chaque ligne est identifiée par une clé :
Clé | Valeur |
---|---|
Nicolas | Première 1 |
Claire | Première 2 |
Arnaud | Première 3 |
Un dictionnaire est identifié en python par des accolades {}
.
On peut créer un dictionnaire de plusieurs façon :
# Création d'un dictionnaire vide de deux manière différente
dico = {} # avec les accolades
dico = dict() # en utilisant le constructeur
On peut aussi créer un dictionnaire en passant directement les couples clé : valeur
séparés par des virgules ,
:
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
print(dico)
Les clés et valeurs d'un dictionnaire peuvent être de types différents et complexes :
dico = {1 : "Nicolas", "Claire " : 5, (1,3) : "tour blanche"}
print( dico )
Dans l'exemple ci-dessus la clé (1,3)
est un couple de nombres (un tuple en python). Cela est pratique pour repérer des éléments dans une grille. Ici par exemple, le contenu de la case de coordonnées (1,3)
est "tour blanche"
Une fois un dictionnaire créé, on peut afficher une valeur en utilisant la notation nom_du_dictionnaire[clé]
:
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
print( dico["Claire"] )
Si une clé n'est pas encore créée, il suffit de l'attribuer :
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
print( dico )
# Ajout de la clé "François"
dico["François"] = "Première 4"
print( dico )
On peut de la même façon modifier une valeur :
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
print( dico )
# Modification de la valeur associée à "Nicolas"
dico["Nicolas"] = "Première 6"
print( dico )
On peut retirer un couple clé : valeur
en utilisant pop(clé)
:
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
print( dico )
# Suppression de l'entrée "Nicolas"
dico.pop("Nicolas")
print( dico )
La taille d'un dictionnaire, le nombre de couples clé : valeur
, est donné à l'aide de len(dico)
:
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
print( len(dico) )
On peut demander à Python si le dictionnaire comporte une entrée associée à une clé précise avec in
:
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
print( "Nicolas" in dico ) # y-a-t'il une clé valant "Nicolas" ? Oui
print( "Première 1" in dico ) # y-a-t'il une clé valant "Première 1" ? Non (c'est une valeur)
L'ensemble des clés d'un dictionnaire est donné par nom_du_dictionnaire.keys()
. Attention on obtient un objet particulier que l'on pourra ensuite convertir en liste.
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
cles = dico.keys()
print( cles )
liste_cles = list(cles)
print( liste_cles)
L'ensemble des valeurs d'un dictionnaire est donné par nom_du_dictionnaire.values()
.
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
valeurs = dico.values()
print( valeurs )
L'ensemble des couples clé, valeur d'un dictionnaire est donné par nom_du_dictionnaire.items()
.
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
couples = dico.items()
print( couples )
A l'aide de ces fonctions on peut parcourir un dictionnaire :
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
print( "Les clés :")
for cle in dico.keys() :
print(">>", cle)
print( "\nLes valeurs :")
for valeur in dico.values() :
print(">>", valeur)
print( "\nLes items :")
for couple in dico.items() :
print(">>", couple)
On peut ainsi par exemple "renverser" un dictionnaire, c.a.d. échanger les clés et valeurs :
dico = {"Nicolas": "Première 1", "Claire": "Première 2", "Arnaud": "Première 3"}
print(dico)
# on crée un nouveau dictionnaire à l'aide du contructeur dict
# on lui donne en argument une liste contenant les couples (valeur,cle) générés en parcourant les items de dico
dico_renverse = dict([(valeur,cle) for (cle,valeur) in dico.items()])
print(dico_renverse)
Dans certains cas, la valeur associée à une clé est un groupe d'objet (un tuple ou un tableau).
Dans ce cas on peut accéder au valeurs ainsi :
# Création d'un dictionnaire avec des prénoms en clés et des triplets de notes en valeurs
dico = {"Nicolas" : (12, 15, 7), "Mylène" : (13, 16, 15)}
# On affiche les notes de Nicolas
print(dico["Nicolas"])
# On affiche la deuxième note de Mylène (d'indice 1 en commençant à compter à 0)
print(dico["Mylène"][1])