Les séquences : Dictionnaire

Types construits

Les objectifs :

  • Utiliser les dictionnaires
  • Utiliser les listes de dictionnaires
  • Trier des listes de dictionnaires

Le panier

Exemple

Modéliser le panier de fruits avec une liste fruits
  • pommes : 2
  • oranges : 5
  • poires : 1

Exemple

Modéliser le panier de fruits avec une liste fruits
  • pommes : 2
  • oranges : 5
  • poires : 1
  • mangue : 8
  • bananes : 4
  • litchis : 13
  • clementines : 7
  • melons : 6
  • ananas : 2

Exemple

  1. Quelle instruction permet d'afficher le nombre d'orange
  2. On ajouter 2 melons au panier. Quelle instruction permet de mettre à jour la variable panier ?

Exemple

En reprennant l'exemple précedent, à l'aide d'un dictionnaire.

Dictionnaire

type dict

Objectifs

  • Créer un dictionnaire,
  • Accéder à une valeur,
  • Ajouter / modifier des couple clé / valeur,
  • Parcourir les éléments d'un dictionnaire,

Définition

Dictionnaire

En informatique, un dictionnaire est une structure de données représentant une séquence finie qui associe une clé et une valeur.

Créer un dictionnaire

Initialisation

Initialisation d'un dictionnaire

En python, les dictionnaires sont contenus dans des accolades { ... }
Les éléments sont séparés par des virgules , et les clés et les valeurs sont séparées par deux points :
{ clé1 : valeur1 ,clé2 : valeur2 ,clé3 : valeur3 }

Dictionnaire vide


Il est possible de créer un dictionnaire vide
# Créer un dictionnaire vide
mon_dictionnaire = {}

Dictionnaire non vide


Il est aussi possible de l'initialiser avec des valeurs
# Créer un dictionnaire à partir de valeurs
informaticiens = {"Alan":1912, "Ada":1815, "Grace":1906}

Accés aux éléments

Accéder à un élément

Pour accéder à une valeur, on utilise sa clé
Le dictionnaires informaticiens contient une collection de couple clé/valeur.

informaticiens = {"Alan":1912, "Ada":1815, "Grace":1906}
            

Clé Valeur
"Alan" 1912
"Ada" 1815
"Grace" 1906

Accéder à un élément

Contrairement aux tableau, on n'utilise pas la position des élèments, mais on utilise la clé de la valeur souhaitée . Elle se place entre crochets [].

informaticiens = {"Alan":1912, "Ada":1815, "Grace":1906}
 
            

Accéder à un élément

Contrairement aux tableau, on n'utilise pas la position des élèments, mais on utilise la clé de la valeur souhaitée . Elle se place entre crochets [].
Pour afficher la date de naissance d'Ada Lovelace, on utilise la clé "Ada" dans le dictionnaire informaticiens

informaticiens = {"Alan":1912, "Ada":1815, "Grace":1906}
 
            

Accéder à un élément

Contrairement aux tableau, on n'utilise pas la position des élèments, mais on utilise la clé de la valeur souhaitée . Elle se place entre crochets [].
Pour afficher la date de naissance d'Ada Lovelace, on utilise la clé "Ada" dans le dictionnaire informaticiens

informaticiens = {"Alan":1912, "Ada":1815, "Grace":1906}
print(informaticiens["Ada"])
            

Modification / création d'un couple clé/valeur

Dans un dictionnaire, la création et la modification d'un couple clé/valeur, se fait de la même façon.
  • Si la clé existe déjà, la valeur sera mise à jour.
  • Sinon le couple clé/valeur sera ajouté au dictionnaire.

Modification

Pour modifier la valeur d'un élément, il faut acceder à cet élément par clé et lui affecter une nouvelle valeur à l'aide du signe =.

dictionnaire[clé ] = nouvelle valeur

Exemple


Après l'exécution du code ci-dessous

informaticiens = {"Alan":1912, "Ada":1815, "Grace":1906,} 
informaticiens["Guido"] = 1956
Le dictionnaire informaticiens contiendra un nouveau couple clé/valeur ("Guido":1956)

Exemple


Quel affichage résultera de l'éxécution du code ci-dessous ?



Exercice

On considère le script suivant :

tab = [2, 8, 9, 2]
tab[2] = 4

Quelle est la valeur de tab à la fin de son exécution ?

Exercice

On considère le script suivant :

tab = [2, 8, 9, 2]
tab[2] = tab[2] + 5

Quelle est la valeur de tab à la fin de son exécution ?

Exercice

On considère le script suivant :

tab = [2, 8, 9, 2]
tab[3] = tab[1] + 5
tab[2] = tab[3] + 5

Quelle est la valeur de tab à la fin de son exécution ?

Ajouter / modifier des éléments

Méthodes

Avec les dictionnaires, la même instruction peut suivant les cas :
  • ajouter un couple clé / valeur,
  • modifier la valeur d'une clé existante.

Méthodes


mon_dictionnaire[clé] = valeur 
                
  • Si la clé n'existe pas dans le dictionnaire, l'instruction ajoute un couple clé / valeur,
  • Si la clé est déjà présente dans le dictionnaire modifie la valeur d'une clé existante.



Dans tous les exercices de cette partie, on considère le dictionnaire panier définie comme ci‐dessous, ou chaque clé représente un fruit et chaque valeur représente le nombre de ce fruit contenu dans le panier :

panier = {"pomme":10, "poire":3, "banane":12, "kiwi":3, "litchi":100}
        
Exercice 1 Quelle instruction permet de récupérer le nombre de pommes ? ................................................................................ Exercice 2 Laquelle des quatre expressions suivantes est valide ? Entourer là. ——d[3] d["pomme":10] — d["poire"] { } — d "litchi" Exercice 3 On ajoute 10 melons. Quelle instruction doit‐on utiliser pour mettre à jour notre panier ? ................................................................................ Exercice 4 On ajoute 3 pommes dans panier. Quelle instruction doit‐on utiliser pour mettre à jour notre panier ? ................................................................................

Etendre une liste


Pour ajouter un dictionnaire d'élément, on utilise la méthode extend. La méthode extend modifie sur place l'objet dictionnaire qui l'appelle.

mon_dictionnaire = ["Alan", "Ada", "Grace", "Ian"]
dictionnaire_2 = ["Charles", "Guido"]
mon_dictionnaire.extend(dictionnaire_2)
print(mon_dictionnaire)
["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]

Ajout par concaténation


Il est aussi possible de concaténer 2 listes pour en créer une troisième à l'aide de l'instruction +.

dictionnaire_1 = ["Alan", "Ada", "Grace", "Ian"]
dictionnaire_2 = ["Charles", "Guido"]
mon_dictionnaire = dictionnaire_1 + dictionnaire_2
print(mon_dictionnaire)
["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]

Exercices

Qu'affiche le programme python suivant ?

tab1 = [3,2,2]
tab2 = [1,5,1]
tab1.append(tab2)
print(tab1)


Parcourir un dictionnaire

Parcourir un dictionnaire

Il existe deux manières de parcourir les éléments d'une liste :
  • Parcourir une liste à partir des index des éléments
  • Parcourir une liste par itération sur les éléments

Parcours à partir de l'index des éléments

En python, les dictionnairex (list) fonction taille len( ) donnant le nombre d'éléments contenus dans la liste.
Associer à la fonction range(), on obtient un itérable composé de tous les index des éléments de la liste.

Parcours à partir de l'index des éléments


mon_dictionnaire = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
for index in range(len(mon_dictionnaire)):
print(mon_dictionnaire[index])
Dans cet exemple, la longueur de mon_dictionnaire est 6.
L'instruction range(len(mon_dictionnaire)) va être successivement évaluée par range(6) puis par un itérable de longueur 6 qui contiendra les valeurs 0, 1, 2, 3, 4 et 5 qui seront succéssivement données à la variable index.

Itération des éléments

Comme pour tout les itérables, il est aussi possible de parcourir un dictionnaire en itérant les éléments du dictionnaire, avec les instructions

for v in iterable.

Exemple


mon_dictionnaire = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
for elmt in mon_dictionnaire:
print(elmt)
Dans cet exemple, la variable elmt prendra successivement les valeurs contenues dans la variable mon_dictionnaire, c'est à dire "Alan", "Ada", "Grace", "Ian".

remarque

Il est souvent utile de bien nommée la variable créée dans la boucle for. Ainsi pour le code précédent, il aurait été préférable d'écrire :


mon_dictionnaire = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
for informaticien in mon_dictionnaire:
print(informaticien)

Exercice

On considère le code suivant :

def feed(t):
for i in range(len(t)):
    t[i] = t[i] + i
return t
Que renvoie l'instruction feed([12, 24, 32]) ?