Python

Leçon 7 - Les Dictionnaires

Dictionnaires [ Bases ]

“La consultation du dictionnaire reste une promenade délicieuse”, et bien vous n’avez pas fini d’y goûter avec ce chapitre ! Pour commencer : Comment déclarer un dictionnaire ? Comment le remplir ? Comment modifier ou supprimer un élément ? On va voir ça de suite !


# Déclaration du dictionnaire
basse_cour={"Dindon":"Pipou", "Poulet":"Wallis", "Pintade":"Futuna"}

# Maintenant je veux connaitre le nom du dindon (2 méthodes possibles)
print (basse_cour["Dindon"])     # J'affiche le nom du dindon
print (basse_cour.get("Dindon")) # J'affiche le nom du dindon²
print (basse_cour)

# Moi qui suis passionné des Îles  Horn, j'échange le dindon Pipou contre un Dindon nommé Alofi
basse_cour["Dindon"]="Alofi" # Je modifie la valeur de mon dindon 
print (basse_cour)

# Un écureuil sauvage a tué mon nouveau dindon
del (basse_cour["Dindon"]) # Je supprime mon dindon du dictionnaire :'(
print (basse_cour)

# L'écureuil sauvage avait, en fait, la rage. Il a tué toute la basse cour :'(
basse_cour.clear()
print (basse_cour)
								
Pipou
Pipou
{'Poulet': 'Wallis', 'Pintade': 'Futuna', 'Dindon': 'Pipou'}
{'Poulet': 'Wallis', 'Pintade': 'Futuna', 'Dindon': 'Alofi'}
{'Poulet': 'Wallis', 'Pintade': 'Futuna'}
{}

Dictionnaires [ Avancé ]

Et voilà, vous savez gérer un dictionnaire ! Maintenant, voyons comment utiliser ce dictionnaires. Des requêtes de bases pour commencer (la commande del a été retirée du programme pour continuer les tests) :


# On peut par exemple tester l'existence d'une clef
test_clef="Dindon"
if test_clef in basse_cour:
	print(basse_cour[test_clef], "est dans la basse cour.")
else:
	print("Il n'y a pas de",test_clef,"dans la basse cour.")
								
Il n'y a pas de Dindon dans la basse cour.

Il est aussi possible d'afficher toutes les clefs, toutes les valeurs ou toutes les entrées :


# Afficher les clefs (2 méthodes)
# Affichage direct
print(basse_cour.keys())

# Affichage via boucle for
for volaille in basse_cour.keys():
	print(volaille)
								
Poulet
Pintade
Dindon

# Afficher les valeurs (2 méthodes)
# Affichage direct
print(basse_cour.values())

# Affichage via boucle for
for volaille in basse_cour.values():
	print(volaille)
								
Wallis
Futuna
Alofi

# Afficher les entrées (2 méthodes)
# Affichage direct
print(basse_cour.items())

# Affichage via boucle for
for volaille, nom in basse_cour.items():
	print(volaille,"=>",nom)
								
dict_items([('Poulet', 'Wallis'), ('Pintade', 'Futuna'), ('Dindon', 'Alofi')])
Poulet => Wallis
Pintade => Futuna
Dindon => Alofi

Maintenant qu'on a vu comme utiliser simplement les dictionnaires, voyons les quelques pièges à éviter !

  • Les dictionnaires n'ont pas d'ordre à recevoir..! La blague était naze, je sais, mais ce que je veux dire c'est que lorsqu'on affiche les clefs d'un dictionnaire, l'ordre peut changer autant de fois que vous lancez la commande ! Il n'y a pas d'ordre dans un dictionnaire.
  • Le deuxième piège est plus subtile. "Il n'est pas possible de donner deux valeurs à une même clef." Si vous entrez une valeur et que vous voulez en ajouter une après, cela va modifier la première valeur... Par contre ! Vous pouvez donner une liste de valeurs à votre clef ! Comme ci-dessous : dictionnaires comme valeurs :


ParcInfo = { \
"2105U":{"Bureau":"A201","OS":"Windows","Version":"10"} , \
"3575S":{"Bureau":"A203","OS":"UBUNTU","Version":"14.04"} , \
"1875T":{"Bureau":"B405","OS":"Debian","Version":"8.2"} , \
"7485V":{"Bureau":"C132","OS":"MAC OS X","Version":"10.11"} }

for SN,caract in ParcInfo.items() :
    print (SN)
    for propriete,valeur in caract.items() :
        print ("\t",propriete," -> ",valeur)
								
3575S
  OS -> UBUNTU
  Version -> 14.04
  Bureau -> A203
1875T
  OS -> Debian
  Version -> 8.2
  Bureau -> B405
2105U
  OS -> Windows
  Version -> 10
  Bureau -> A201
7485V
  OS -> MAC OS X
  Version -> 10.11
  Bureau -> C132

Il est également possible de mettre des listes comme valeurs :


Repertoire = { \
"ABT":["01 23 45 67 89" , "06 74 85 96 12" , "07 25 58 69 74"] , \
"GHU":["01 15 75 96 42" , "06 23 52 74 95"] , \
"KTI":["01 91 52 73 65" , "01 37 56 28 45" , "06 96 28 74 31" , "+33 2 91 75 87 03"] }

for ami,tels in Repertoire.items() :
    print(ami)
    for tel in tels :
        print ("\t",tel)
								
GHU
  01 15 75 96 42
  06 23 52 74 95
ABT
  01 23 45 67 89
  06 74 85 96 12
  07 25 58 69 74
KTI
  01 91 52 73 65
  01 37 56 28 45
  06 96 28 74 31
  +33 2 91 75 87 03

Et voilà ! Vous savez tout ce qu'il faut savoir pour vous lancer dans la programmation de dictionnaires ! Have Fun ! :D