Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Compréhensions de dictionnaires | Compréhensions de Listes et de Dictionnaires
Tutoriel sur les Boucles en Python
Section 4. Chapitre 3
single

single

Compréhensions de dictionnaires

Glissez pour afficher le menu

Les compréhensions de dictionnaires offrent un moyen concis de créer des dictionnaires en Python, similaire aux compréhensions de listes. Elles permettent de transformer des données en paires clé-valeur en une seule ligne de code.

Fondamentalement, une compréhension de dictionnaire basique permet de construire un nouveau dictionnaire en appliquant une expression à chaque paire clé-valeur dans une variable itérable.

{key_expression: value_expression for item in iterable}
  • key_expression : définit la clé pour chaque paire clé-valeur ;
  • value_expression : définit la valeur correspondant à la clé ;
  • iterable : source des éléments à traiter (par exemple, une liste, un range ou un autre itérable).
Note
Remarque

Contrairement aux listes, les dictionnaires nécessitent à la fois une clé et une valeur, séparées par un deux-points (:), et utilisent {} au lieu de [].

12345678910111213141516
travel_wishlist = [ ['Paris', 2000], ['Tokyo', 3000], ['New York', 2500], ['Kyoto', 1500], ['Sydney', 4000] ] # Initialize an empty dictionary travel_budget = {} # Populate the dictionary using a for loop for destination, cost in travel_wishlist: travel_budget[destination] = cost print(travel_budget)

Ce code parcourt la liste travel_wishlist, où chaque sous-liste contient une destination et son budget. La boucle for attribue la destination comme clé et le budget comme valeur dans le dictionnaire travel_budget.

123456789101112
travel_wishlist = [ ['Paris', 2000], ['Tokyo', 3000], ['New York', 2500], ['Kyoto', 1500], ['Sydney', 4000] ] # Create the dictionary using dictionary comprehension travel_budget = {destination: cost for destination, cost in travel_wishlist} print(travel_budget)

Cet exemple utilise une compréhension de dictionnaire pour obtenir le même résultat que l'exemple précédent. Chaque destination devient une clé, et son coût correspondant devient la valeur dans le dictionnaire travel_budget, le tout en une seule ligne.

Gestion de ValueError lors du déballage d’éléments contenant plus de deux éléments

Lors de l’utilisation des compréhensions de dictionnaires, il est courant de déballer les éléments d’un itérable dans des variables pour les clés et les valeurs. Si chaque élément de votre itérable contient plus de deux éléments (comme une liste de [city, country, budget]), tenter de déballer dans seulement deux variables provoquera une ValueError.

Par exemple, si vous écrivez :

{city: country for city, country in travel_wishlist}

et que travel_wishlist contient des sous-listes avec trois éléments, Python affichera cette erreur :

ValueError: too many values to unpack (expected 2)

Pourquoi cela se produit-il ?

  • Python s’attend à déballer exactement deux valeurs (pour city et country), mais chaque sous-liste en possède trois.
  • Ce décalage provoque une ValueError, indiquant clairement que plus de valeurs sont fournies que prévu.

Comment gérer ce cas ?

  • Déballer tous les éléments, mais n’utiliser que ceux nécessaires :

for city, country, budget in travel_wishlist — chaque valeur est assignée à une variable.

  • Ignorer les valeurs inutilisées avec un underscore :

for city, country, _ in travel_wishlist — l’underscore _ est une convention courante pour les variables non utilisées.

  • Utiliser le slicing pour sélectionner les éléments :

for city, country in [item[:2] for item in travel_wishlist] — chaque sous-liste est découpée pour ne garder que les deux premiers éléments avant le déballage.

En faisant correspondre le nombre de variables au nombre d’éléments dans chaque item, ou en ignorant les données inutilisées, il est possible d’éviter les erreurs de déballage et de garder les compréhensions de dictionnaires claires et lisibles.

1234567891011121314151617181920
# Example data: each tuple has three elements (city, country, budget) travel_wishlist = [ ("Paris", "France", 2000), ("Tokyo", "Japan", 3000), ("New York", "USA", 2500) ] # Attempting to unpack only two variables (incorrect) try: city_to_country = {city: country for city, country in travel_wishlist} except ValueError as e: print("Error:", e) # Correct: unpack all elements, using underscore for unused value city_to_country = {city: country for city, country, _ in travel_wishlist} print("Handled with underscore:", city_to_country) # Correct: use slicing to select only needed elements city_to_country = {item[0]: item[1] for item in travel_wishlist} print("Handled with slicing:", city_to_country)
Tâche

Glissez pour commencer à coder

Un voyageur souhaite organiser sa travel_wishlist en associant chaque nom de ville à son pays correspondant. Pour réaliser cela efficacement, il est nécessaire de transformer les données en un dictionnaire.

  • Extraire les noms des villes et leurs pays correspondants à partir de travel_wishlist.
  • Enregistrer le dictionnaire obtenu dans city_to_country.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 3
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt