Compréhension du dictionnaire Python

Dans ce tutoriel, nous allons découvrir la compréhension du dictionnaire Python et comment l'utiliser à l'aide d'exemples.

Les dictionnaires sont des types de données en Python qui nous permettent de stocker des données dans une paire clé / valeur . Par exemple:

 my_dict = (1: 'apple', 2: 'ball') 

Pour en savoir plus sur eux, visitez: Dictionnaire Python

Qu'est-ce que la compréhension de dictionnaire en Python?

La compréhension de dictionnaire est une manière élégante et concise de créer des dictionnaires.

Exemple 1: Compréhension du dictionnaire

Considérez le code suivant:

 square_dict = dict() for num in range(1, 11): square_dict(num) = num*num print(square_dict) 

Maintenant, créons le dictionnaire dans le programme ci-dessus en utilisant la compréhension du dictionnaire.

 # dictionary comprehension example square_dict = (num: num*num for num in range(1, 11)) print(square_dict) 

La sortie des deux programmes sera la même.

 (1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100)

Dans les deux programmes, nous avons créé un dictionnaire square_dictavec une paire clé / valeur en carré numérique .

Cependant, l'utilisation de la compréhension du dictionnaire nous a permis de créer un dictionnaire en une seule ligne .

Utilisation de la compréhension du dictionnaire

À partir de l'exemple ci-dessus, nous pouvons voir que la compréhension du dictionnaire doit être écrite dans un modèle spécifique.

La syntaxe minimale pour la compréhension du dictionnaire est:

 dictionnaire = (clé: valeur pour vars dans itérable) 

Comparons cette syntaxe avec la compréhension du dictionnaire de l'exemple ci-dessus.

Voyons maintenant comment nous pouvons utiliser la compréhension du dictionnaire en utilisant les données d'un autre dictionnaire.

Exemple 3: Comment utiliser la compréhension du dictionnaire

 #item price in dollars old_price = ('milk': 1.02, 'coffee': 2.5, 'bread': 2.5) dollar_to_pound = 0.76 new_price = (item: value*dollar_to_pound for (item, value) in old_price.items()) print(new_price) 

Production

 ('lait': 0,7752, 'café': 1,9, 'pain': 1,9) 

Ici, nous pouvons voir que nous avons récupéré les prix des articles en dollars et les avons convertis en livres. L'utilisation de la compréhension du dictionnaire rend cette tâche beaucoup plus simple et plus courte.

Conditions dans la compréhension du dictionnaire

Nous pouvons personnaliser davantage la compréhension du dictionnaire en y ajoutant des conditions. Regardons un exemple.

Exemple 4: Si la compréhension du dictionnaire conditionnel

 original_dict = ('jack': 38, 'michael': 48, 'guido': 57, 'john': 33) even_dict = (k: v for (k, v) in original_dict.items() if v % 2 == 0) print(even_dict) 

Production

 ('jack': 38, 'michael': 48) 

Comme nous pouvons le voir, seuls les éléments de valeur paire ont été ajoutés, à cause de la ifclause dans la compréhension du dictionnaire.

Exemple 5: Compréhension d'un dictionnaire multiple si conditionnel

 original_dict = ('jack': 38, 'michael': 48, 'guido': 57, 'john': 33) new_dict = (k: v for (k, v) in original_dict.items() if v % 2 != 0 if v < 40) print(new_dict) 

Production

 («Jean»: 33) 

Dans ce cas, seuls les éléments avec une valeur impaire inférieure à 40 ont été ajoutés au nouveau dictionnaire.

C'est à cause des multiples ifclauses de la compréhension du dictionnaire. Ils sont équivalents à une andopération où les deux conditions doivent être vraies.

Exemple 6: Compréhension du dictionnaire conditionnel if-else

 original_dict = ('jack': 38, 'michael': 48, 'guido': 57, 'john': 33) new_dict_1 = (k: ('old' if v> 40 else 'young') for (k, v) in original_dict.items()) print(new_dict_1) 

Production

 ('jack': 'jeune', 'michael': 'vieux', 'guido': 'vieux', 'john': 'jeune') 

Dans ce cas, un nouveau dictionnaire est créé via la compréhension du dictionnaire.

Les articles d'une valeur de 40 ou plus ont la valeur «vieux» tandis que d'autres ont la valeur de «jeune».

Compréhension de dictionnaires imbriqués

Nous pouvons ajouter des compréhensions de dictionnaire aux compréhensions de dictionnaire elles-mêmes pour créer des dictionnaires imbriqués. Regardons un exemple.

Exemple 7: Dictionnaire imbriqué avec deux compréhensions de dictionnaires

 dictionary = ( k1: (k2: k1 * k2 for k2 in range(1, 6)) for k1 in range(2, 5) ) print(dictionary) 

Production

 (2: (1: 2, 2: 4, 3: 6, 4: 8, 5: 10), 3: (1: 3, 2: 6, 3: 9, 4: 12, 5: 15), 4: (1: 4, 2: 8, 3: 12, 4: 16, 5: 20)) 

As you can see, we have constructed a multiplication table in a nested dictionary, for numbers from 2 to 4.

Whenever nested dictionary comprehension is used, Python first starts from the outer loop and then goes to the inner one.

So, the above code would be equivalent to:

 dictionary = dict() for k1 in range(11, 16): dictionary(k1) = (k2: k1*k2 for k2 in range(1, 6)) print(dictionary) 

It can further be unfolded:

 dictionary = dict() for k1 in range(11, 16): dictionary(k1) = dict() for k2 in range(1, 6): dictionary(k1)(k2) = k1*k2 print(dictionary) 

All these three programs give us the same output.

Advantages of Using Dictionary Comprehension

As we can see, dictionary comprehension shortens the process of dictionary initialization by a lot. It makes the code more pythonic.

Using dictionary comprehension in our code can shorten the lines of code while keeping the logic intact.

Warnings on Using Dictionary Comprehension

Même si la compréhension du dictionnaire est idéale pour écrire du code élégant et facile à lire, elle n'est pas toujours le bon choix.

Nous devons être prudents en les utilisant comme:

  • Ils peuvent parfois ralentir l'exécution du code et consommer plus de mémoire.
  • Ils peuvent également diminuer la lisibilité du code.

Nous ne devons pas essayer d'intégrer une logique difficile ou un grand nombre de compréhension de dictionnaire à l'intérieur juste pour le simple plaisir de rendre le code une ligne. Dans ces cas, il vaut mieux choisir d'autres alternatives comme les boucles.

Articles intéressants...