Aller au contenu

2.2 Dictionnaires⚓︎

image

1. Les dictionnaires : premiers exemples⚓︎

Une liste est un ensemble d'éléments accessibles par leur indice. Cet indice est en quelque sorte la «place» de l'élément dans la liste. On peut dire que cet indice est la clé qui permet d'accéder à l'élément.

Dans un dictionnaire, chaque élément est accessible par une clé qui n'est plus forcément un nombre : une chaine de caractère, un nombre, ou autre chose, peut être une clé.

Imaginons que je fasse l'inventaire de mon dressing :

habits quantité
pantalons 3
pulls 4
tee-shirts 8

Exemple fondateur n°1 ❤

  • La création du dictionnaire représentant mon dressing se fera par :
    🐍 Script Python
    >>> dressing = {"pantalons":3, "pulls":4, "tee-shirts":8}
    
  • L'accès à une valeur se fera par :
    🐍 Script Python
    >>> dressing["pulls"]
      4
    
  • On dit que "pulls" est la clé et que 4 est la valeur associée à la clé.

  • Un dictionnaire est un ensemble clés / valeurs.

⚠ Attention ⚠ : la clé peut aussi être un nombre :

🐍 Script Python
>>> myst = {9:4, 1:2, 6:3, 7:4} 
>>> myst[1]
2
>>> myst[7]
4 

2. Définitions et propriétés d'un dictionnaire⚓︎

2.1 Définitions⚓︎

Définition

Un dictionnaire est une donnée composite qui n'est pas ordonnée (à la différence des listes !) Il fonctionne par un système de clé:valeur.
Les clés, comme les valeurs, peuvent être de types différents. Un dictionnaire est délimité par des accolades.

Rappel :

  • crochets [ ] -> listes
  • parenthèses ( ) -> tuples
  • accolades { } -> dictionnaires

2.2 Méthodes .keys() et .values()⚓︎

Exemples fondateurs n°2 ❤

  • Pour lister les clés d'un dictionnaire :
    🐍 Script Python
    >>> dressing.keys()
    dict_keys(['pantalons', 'pulls', 'tee-shirts'])
    
  • Pour lister les valeurs d'un dictionnaire :
    🐍 Script Python
    >>> dressing.values()
    dict_values([3, 4, 8])
    

Ces méthodes sont importantes (elles figurent explicitement au programme de NSI) mais sont en pratique peu utilisées. On leur préfèrera très largement la méthode de parcours suivante :

2.3 ⭐ ⭐ ⭐ Parcours d'un dictionnaire ⭐ ⭐ ⭐⚓︎

Exemple fondateur n°3 ❤

🐍 Script Python
>>> for habit in dressing:
        print(dressing[habit])
3
4
8

Observation grâce à PythonTutor

Exercice 1

Faire afficher la sortie suivante :

🐍 Script Python
pantalons -> 3
pulls -> 4
tee-shirts -> 8

Correction
🐍 Script Python
1
2
3
4
dressing = {'pantalons':3, 'pulls':4, 'tee-shirts':8}

for habit in dressing:
    print(habit, '->', dressing[habit])       

2.4 Création d'un dictionnaire vide⚓︎

Exemple fondateur n°4 ❤

Deux méthodes existent pour créer un dictionnaire : dict() et {}

🐍 Script Python
>>> mondico = dict()
>>> mondico
{}
>>> mondico['john'] = 12
>>> mondico
{'john': 12}
🐍 Script Python
>>> contacts = {}
>>> contacts['bob'] = '06 12 17 21 32'

2.5 Ajout / Modification d'un élément dans un dictionnaire⚓︎

Exemple fondateur n°5 ❤

Pas besoin d'une méthode append() comme pour les listes, il suffit de rajouter une paire clé : valeur :

🐍 Script Python
>>> dressing["chaussettes"] = 12

On peut aussi modifier un dictionnaire existant.

🐍 Script Python
>>> dressing["chaussettes"] = 11

2.6 Suppression d'une valeur⚓︎

Exemple fondateur n°6 ❤

On utilise l'instruction del (déjà rencontrée pour les listes)

🐍 Script Python
del dressing["chaussettes"]
Cette instruction est en pratique peu utilisée.

Exercice 2

Reprenons notre dictionnaire dressing :

🐍 Script Python
dressing = {"pantalons":3, "pulls":4, "tee-shirts":8}
Créer une fonction achat qui prend en paramètre une chaine de caractères habit augmente de 1 la quantité de l'habit concerné (pantalon, pull ou tee-shirt) de mon dressing.

Exemple d'utilisation :

🐍 Script Python
>>> dressing["pulls"]
4
>>> achat("pulls")
>>> dressing["pulls"]
5

"""

Correction
🐍 Script Python
1
2
3
4
dressing = {'pantalons':3, 'pulls':4, 'tee-shirts':8}

def achat(habit):
    dressing[habit] += 1

Remarque : Petit problème si on essaie d'acheter un vêtement pour la 1ère fois

🐍 Script Python
>>> achat("chemises")
    ---------------------------------------------------------------------------

    KeyError                                  Traceback (most recent call last)

    <ipython-input-28-fd9d1ac5f62d> in <module>
    ----> 1 achat("chemises")


    <ipython-input-27-feb173444189> in achat(habit)
          1 def achat(habit):
    ----> 2     dressing[habit] = dressing[habit] + 1


    KeyError: 'chemises'

Nous allons résoudre ce problème grâce à :

2.7 Test d'appartenance à un dictionnaire⚓︎

Exemple fondateur n°7 ❤

Le mot in permet de tester l'appartenance d'une clé à un dictionnaire. Un booléen est renvoyé.

🐍 Script Python
>>> "cravates" in dressing
  False

3. Exercices⚓︎