Compréhension de dictionnaire

Une façon concise de construire un nouveau dictionnaire en transformant ou en filtrant une autre collection.

Renvoie
Un nouveau dictionnaire.
Modifie l’original
Non
Sur cette page

Exemple

#
Python
names = ["Léa", "Lucas", "Emma"]
lengths = {name: len(name) for name in names}
print(lengths)

prices = {"HTML": 49, "Python": 79, "React": 99}
sale = {course: price * 0.5 for course, price in prices.items() if price > 50}
print(sale)
Résultatrésultat enregistré, vous pouvez le vérifier
{'Léa': 3, 'Lucas': 5, 'Emma': 4}
{'Python': 39.5, 'React': 49.5}

Définition et utilisation

#

Une compréhension de dictionnaire construit un dictionnaire selon le modèle {key: value for item in collection}. Elle fonctionne comme une compréhension de liste, sauf qu’elle s’écrit entre accolades, et qu’un deux-points sépare la clé de la valeur.

Une condition if optionnelle à la fin filtre les éléments. La source peut être n’importe quelle collection : une liste, range(), des paires issues de zip(), ou les items() d’un autre dictionnaire. Cela permet de transformer des valeurs, d’échanger les clés avec les valeurs, ou de ne garder que certaines entrées.

Quand deux éléments produisent la même clé, le résultat garde la valeur du dernier, sans aucun avertissement. En inversant un dictionnaire qui a des valeurs répétées, une partie des données disparaît tout simplement.

Syntaxe

#
Syntaxe
{clé: valeur for élément in collection if condition}

Plus d’exemples

#
Échanger les clés avec les valeurs
Python
codes = {"pl": "polonais", "en": "anglais"}
print({name: code for code, name in codes.items()})

grades = {"Léa": 5, "Lucas": 4, "Emma": 5}
print({grade: name for name, grade in grades.items()})
Résultatrésultat enregistré, vous pouvez le vérifier
{'polonais': 'pl', 'anglais': 'en'}
{5: 'Emma', 4: 'Lucas'}
Dictionnaire à partir de deux listes et d’une plage
Python
courses = ["HTML", "CSS", "Python"]
modules = [11, 9, 12]

print({course: count for course, count in zip(courses, modules)})
print({n: n ** 2 for n in range(1, 5)})
Résultatrésultat enregistré, vous pouvez le vérifier
{'HTML': 11, 'CSS': 9, 'Python': 12}
{1: 1, 2: 4, 3: 9, 4: 16}

Bonnes pratiques

#
  • Pour simplement combiner deux listes, dict(zip(keys, values)) suffit. Une compréhension de dictionnaire se justifie quand vous voulez aussi transformer ou filtrer au passage.
  • Attention aux clés répétées : la dernière valeur écrase silencieusement les précédentes.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.