Comment trier un dictionnaire Python par clé ou valeur

Dans ce didacticiel, vous apprendrez à trier un dictionnaire Python par sa clé ou sa valeur.
Lorsque vous travaillez avec un dictionnaire en Python, vous devrez parfois trier son contenu, par clé ou par valeur. Comme un dictionnaire Python est un mappage clé-valeur, vous allez créerate un nouveau dictionnaire contenant les clés ou les valeurs triées selon les besoins.
Dans ce tutoriel, nous commencerons par revVoir les bases du dictionnaire Python. Nous apprendrons ensuite à créerate un nouveau dictionnaire dans lequel le contenu est trié par clé ou par valeur, selon les besoins.
Bases du dictionnaire Python, Revvisité
Dictionary est une structure de données intégrée à Python. Il stocke les articles comme paires clé-valeur. Vous pouvez utiliser les touches pour rechercher les valeurs correspondantes. Comme les clés identifient de manière unique les valeurs, il ne doit y avoir aucune répétition de clés.
py_dict = {"Python":"cool!","Learn":True}
py_dict["Python"]
# Output: cool!
py_dict["Learn"]
# Output: True
Fonctionally, un dictionnaire est similaire à une carte de hachage. Il ne s’agit donc pas nécessairement d’une structure de données ordonnée. Vous pouvez accéder au contenu d'un dictionnaire dans n'importe quel endroitbitordre rare, à condition de connaître les clés.
Classement des éléments dans un dictionnaire
Dans les versions antérieures de Python, vous deviez utiliser un OrdonnéDict pour conserver l'ordre des touches. Cependant, à partir de Python 3.7, vous pouvez accéder aux éléments du même ordre dans lequel vous les ajoutez au dictionnaire.
Maintenant que vous avez appris les bases des dictionnaires Python, apprenons à créerate copies triées du dictionnaire.
⚙️ Notes: Vous devez disposer de Python 3.7 ou later pour que le code de ce didacticiel fonctionne comme prévu. Vous pouvez télécharger le lateère version de Python.
Comment trier un dictionnaire Python par clé
Regardez l'image suivante de la carte des desserts dans un café. Il y a deux colonnes correspondant aux articles du menu et à leurs prix respectifs.

You can represent this in the form of a Python dictionary by collecting the names of items as keys and their prices as values.
Allons-y et créonsate le dictionnaire desserts
, comme indiqué ci-dessous.
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
Ensuite, créonsate un dictionnaire sorted_desserts
, où les desserts sont classés par ordre alphabétique. Dans la version originale desserts
dictionnaire, les noms des desserts sont les clés. Vous devez donc trier ces clés par ordre alphabétique pour créerate un nouveau dictionnaire.
Comment accéder aux clés d'un dictionnaire Python
Pour ce faire, nous allons d'abord récupérer les clés du dictionnaire puis les trier par ordre alphabétique.
En Python, vous pouvez utiliser la méthode du dictionnaire intégré
.keys()
pour obtenir une liste de toutes les clés du dictionnaire.
Appelons le .keys()
méthode sur le dessert
dictionnaire pour récupérer les clés, comme indiqué ci-dessous.
keys = desserts.keys()
print(keys)
#Output
['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies',
'Cup cake']
Appel de la fonction intégrée de Python
sorted()
fonction avec une liste comme argument renvoie une nouvelle liste triée.
Ensuite, appelons le sorted()
fonction avec la liste keys
comme argument et stocker la liste triée dans la variable sorted_keys
.
sorted_keys = sorted(keys)
print(sorted_keys)
# Output
['Brownies', 'Cheesecake', 'Cookies', 'Cup cake', 'Ice cream', 'Swiss roll']
Maintenant que nous avons les clés triées par ordre alphabétique, nous pouvons rechercher les valeurs correspondant aux clés dans sorted_keys
du desserts
dictionnaire, comme indiqué ci-dessous.
sorted_desserts = {}
for key in sorted_keys:
sorted_desserts[key] = desserts[key]
print(sorted_desserts)
# Output
{'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2,
'Ice cream': 10, 'Swiss roll': 5}
Développons le bloc de code ci-dessus :
- Initialiser
sorted_desserts
être un dictionnaire Python vide. - Parcourez la liste des clés
sorted_keys
. - Pour chaque clé dans
sorted_keys
, ajoutez une entrée àsorted_desserts
en recherchant la valeur correspondante dansdesserts
dictionnaire.
Le for
une boucle comme celle-ci est considérée comme détaillée. En Python, il existe une alternative plus concise utilisant la compréhension du dictionnaire.
Compréhension du dictionnaire en Python
Python prend en charge l'utilisation de la compréhension du dictionnaire, similaire à compréhension de la liste. La compréhension du dictionnaire vous permet de créerate un nouveau dictionnaire Python avec une seule ligne de code.
▶️ Voici la construction générale pour utiliser la compréhension du dictionnaire en Python.
# 1. when you have both keys and values in two lists: list1, list2
new_dict = {key:value for key,value in zip(list1,list2)}
# 2. when you have the keys, and can look up the values
new_dict = {key:value for key in <iterable>}
Utilisons la deuxième construction dans la cellule ci-dessus : new_dict = {key:value for key in <iterable>}
créerate a sorted_desserts
dictionnaire.
Dans cet exemple:
- itérable: la liste
sorted_keys
- key: la clé à laquelle nous accédons en bouclant à travers sorted_keys
- Plus-value: rechercher la valeur correspondant à la clé dans le dictionnaire des desserts,
desserts[key]
En mettant tout cela ensemble, nous avons l'expression pour la compréhension du dictionnaire, comme indiqué ci-dessous.
sorted_desserts = {key:desserts[key] for key in sorted_keys}
print(sorted_desserts)
{'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2,
'Ice cream': 10, 'Swiss roll': 5}
À partir de la sortie ci-dessus, les desserts sont classés par ordre alphabétique dans le sorted_desserts
dictionnaire.
Comment trier un dictionnaire Python par valeur
Ensuite, nous apprendrons à trier un dictionnaire Python par ses valeurs.
Dans le desserts
dictionnaire, les valeurs correspondent aux prix des desserts. Vous pouvez trier le dictionnaire par prix, par ordre croissant ou décroissant.
▶️ Vous pouvez utiliser la méthode du dictionnaire intégré .items()
pour obtenir toutes les paires clé-valeur. Chaque tuple est une paire clé-valeur.
desserts.items()
dict_items([('Ice cream', 10), ('Brownies', 12), ('Cheesecake', 3),
('Swiss roll', 5), ('Cookies', 4), ('Cup cake', 2)])
Chacun des éléments est un tupleself. Ainsi, vous pouvez également indexer chaque paire clé-valeur pour accéder aux clés et valeurs individuelles.ally.
dict_items = desserts.items()
for item in dict_items:
print(f"key:{item[0]},value:{item[1]}")
# Output
key:Ice cream,value:10
key:Brownies,value:12
key:Cheesecake,value:3
key:Swiss roll,value:5
key:Cookies,value:4
key:Cup cake,value:2
Comme nous aimerions trier par valeurs, nous utiliserons la méthode ci-dessus pour obtenir la valeur à l'index 1 dans la paire clé-valeur.
Comment trier les valeurs d'un dictionnaire Python par ordre croissant
Cette fois, nous utiliserons le sorted()
fonction avec l'option key
paramètre. key
can be any Python function, a built-in function, a user-defined function, or even a lambda function.
Notes:
lambda args: expression
est la syntaxe pour définir les fonctions lambda en Python.
Dans cet exemple de tri des desserts par prix, nous avons accès aux éléments du dictionnaire (couples clé-valeur). Nous fixerons key = lambda item:item[1]
car nous aimerions trier par la valeur (prix).
As sorted()
renvoie une liste par défaut, vous devez explicitement la convertir en une dict
, comme indiqué ci-dessous.
sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1]))
print(sorted_desserts)
{'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5,
'Ice cream': 10, 'Brownies': 12}
You can also rewrite using dictionary comprehension, as discussed earlier.
sorted_desserts = {key:value for key, value in sorted(desserts.items(),
key=lambda item:item[1])}
print(sorted_desserts)
# Output
{'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5,
'Ice cream': 10, 'Brownies': 12}
In sorted_desserts
, Cup Cake
au prix de 2 $ est le premier article et Brownies
au prix de 12 $ est le dernier article.
Comment trier les valeurs d'un dictionnaire Python par ordre décroissant
Si vous souhaitez trier les prix par ordre décroissant, vous pouvez définir l'option facultative revremplacer le paramètre par True
, comme expliqué ci-dessous.
sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1],
reverse=True))
print(sorted_desserts)
# Output
{'Brownies': 12, 'Ice cream': 10, 'Swiss roll': 5, 'Cookies': 4,
'Cheesecake': 3, 'Cup cake': 2}
Maintenant, sorted_desserts
a été trié par ordre décroissant de prix, en commençant par le dessert le plus cher Brownies
coûte 12 $.
Récapitulation
Résumons rapidement tout ce que nous avons appris dans ce tutoriel.
- Un dictionnaire Python stocke les données dans des paires clé-valeur ; les clés doivent toutes être uniques.
- Dans le process de trier un dictionnaire par clé ou par valeur, nous créonsate un nouveau dictionnaire trié selon les besoins.
- Vous pouvez utiliser les méthodes de dictionnaire intégrées, .clés() et le .éléments() pour récupérer toutes les clés et les paires clé-valeur, respectivement.
- Vous pouvez utiliser le trié () fonction avec les paramètres facultatifs key et le revétreindre pour obtenir le tri souhaité.