Dictionnaires Python

En Python, un dictionnaire est une collection ordonnée (à partir de Python > 3.7) de paires clé: valeur.

De la documentation Python 3

Les principales opérations sur un dictionnaire sont de stocker une valeur avec une certaine clé et d'extraire la valeur étant donnée la clé. Il est également possible de supprimer une paire clé:valeur avec del.

Exemple de dictionnaire :

# Dictionnaire : collection de paires clé-valeur
my_cat = {
    'size': 'fat',          # clé: 'size', valeur: 'fat'
    'color': 'gray',         # clé: 'color', valeur: 'gray'
    'disposition': 'loud'    # clé: 'disposition', valeur: 'loud'
}

Définir une clé, une valeur en utilisant l’opérateur de sous-indice []

# Ajouter ou mettre à jour une entrée de dictionnaire en utilisant l'opérateur de sous-indice
my_cat = {
 'size': 'fat',
 'color': 'gray',
 'disposition': 'loud',
}
my_cat['age_years'] = 2  # Ajouter une nouvelle paire clé-valeur
print(my_cat)
{'size': 'fat', 'color': 'gray', 'disposition': 'loud', 'age_years': 2}

Obtenir la valeur en utilisant l’opérateur de sous-indice []

Si la clé n’est pas présente dans le dictionnaire, une KeyError est levée.

my_cat = {
 'size': 'fat',
 'color': 'gray',
 'disposition': 'loud',
}
print(my_cat['size'])
fat
print(my_cat['eye_color'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'eye_color'

values()

La méthode values() récupère les valeurs du dictionnaire :

# Itérer sur les valeurs du dictionnaire en utilisant la méthode .values()
pet = {'color': 'red', 'age': 42}
for value in pet.values():  # Boucler sur toutes les valeurs
    print(value)
red
42

keys()

La méthode keys() récupère les clés du dictionnaire :

# Itérer sur les clés du dictionnaire en utilisant la méthode .keys()
pet = {'color': 'red', 'age': 42}
for key in pet.keys():  # Boucler sur toutes les clés
    print(key)
color
age

Il n’est pas nécessaire d’utiliser .keys() car par défaut, vous parcourrez les clés :

# Itérer directement sur le dictionnaire parcourt les clés (comportement par défaut)
pet = {'color': 'red', 'age': 42}
for key in pet:  # Équivalent à for key in pet.keys()
    print(key)
color
age

items()

La méthode items() récupère les éléments d’un dictionnaire et les retourne sous forme de Tuple :

pet = {'color': 'red', 'age': 42}
for item in pet.items():
    print(item)
('color', 'red')
('age', 42)

En utilisant les méthodes keys(), values() et items(), une boucle for peut itérer respectivement sur les clés, les valeurs ou les paires clé-valeur d’un dictionnaire.

# Itérer sur les paires clé-valeur en utilisant la méthode .items()
pet = {'color': 'red', 'age': 42}
for key, value in pet.items():  # Dépaqueter le tuple en clé et valeur
    print(f'Key: {key} Value: {value}')
Key: color Value: red
Key: age Value: 42

get()

La méthode get() retourne la valeur d’un élément avec la clé donnée. Si la clé n’existe pas, elle retourne None :

# Méthode .get() : récupérer la valeur en toute sécurité, retourne None si la clé n'existe pas
wife = {'name': 'Rose', 'age': 33}

f'My wife name is {wife.get("name")}'  # Retourne 'Rose'
'My wife name is Rose'
f'She is {wife.get("age")} years old.'
'She is 33 years old.'
f'She is deeply in love with {wife.get("husband")}'
'She is deeply in love with None'

Vous pouvez également changer la valeur par défaut None par celle de votre choix :

wife = {'name': 'Rose', 'age': 33}

f'She is deeply in love with {wife.get("husband", "lover")}'
'She is deeply in love with lover'

Ajout d’éléments avec setdefault()

Il est possible d’ajouter un élément à un dictionnaire de cette manière :

wife = {'name': 'Rose', 'age': 33}
if 'has_hair' not in wife:
    wife['has_hair'] = True

En utilisant la méthode setdefault, nous pouvons rendre le même code plus court :

wife = {'name': 'Rose', 'age': 33}
wife.setdefault('has_hair', True)
wife
{'name': 'Rose', 'age': 33, 'has_hair': True}

Suppression d’éléments

pop()

La méthode pop() supprime et retourne un élément basé sur une clé donnée.

wife = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
wife.pop('age')
33
wife
{'name': 'Rose', 'hair': 'brown'}
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Que fait pop() lorsqu'il est appelé sur un dictionnaire ?
A. Supprime uniquement la paire clé-valeur
B. Supprime et retourne la valeur pour la clé spécifiée
C. Retourne uniquement la valeur sans la supprimer
D. Supprime tous les éléments du dictionnaire

popitem()

La méthode popitem() supprime le dernier élément d’un dictionnaire et le retourne.

wife = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
wife.popitem()
('hair', 'brown')
wife
{'name': 'Rose', 'age': 33}

del

La méthode del supprime un élément basé sur une clé donnée.

wife = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
del wife['age']
wife
{'name': 'Rose', 'hair': 'brown'}

clear()

La méthode clear() supprime tous les éléments d’un dictionnaire.

wife = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
wife.clear()
wife
{}

Vérification des clés dans un Dictionnaire

person = {'name': 'Rose', 'age': 33}

'name' in person.keys()
True
'height' in person.keys()
False
'skin' in person # Vous pouvez omettre keys()
False

Vérification des valeurs dans un Dictionnaire

person = {'name': 'Rose', 'age': 33}

'Rose' in person.values()
True
33 in person.values()
True

Affichage soigné (Pretty Printing)

import pprint

wife = {'name': 'Rose', 'age': 33, 'has_hair': True, 'hair_color': 'brown', 'height': 1.6, 'eye_color': 'brown'}
pprint.pprint(wife)
{'age': 33,
 'eye_color': 'brown',
 'hair_color': 'brown',
 'has_hair': True,
 'height': 1.6,
 'name': 'Rose'}

Fusionner deux dictionnaires

Pour Python 3.5 et supérieur :

dict_a = {'a': 1, 'b': 2}
dict_b = {'b': 3, 'c': 4}
dict_c = {**dict_b, **dict_a}
dict_c
{'a': 1, 'b': 3, 'c': 4}
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Lors de la fusion de deux dictionnaires en utilisant {**dict_b, **dict_a}, que se passe-t-il si les deux dictionnaires ont la même clé ?
A. La valeur de dict_b écrase la valeur de dict_a
B. La valeur de dict_a écrase la valeur de dict_b
C. Les deux valeurs sont conservées dans une liste
D. Une erreur est levée

Liens pertinents