Python, étant donné un dictionnaire, effectuez un tri, en fonction de clés ou de valeurs. [ Python applicable>=3.6v ].
Saisir : test_dict = {Gfg : 5, est : 7, Meilleur : 2} Sortir : {'Meilleur' : 2, 'Gfg' : 5, 'est' : 7}, {'est' : 7, 'Gfg' : 5, 'Meilleur' : 2} Explication : Trié par clés, par ordre croissant et inverse. Saisir : test_dict = {Meilleur : 2, pour : 9, geeks : 8} Sortir : {'Meilleur' : 2, 'Gfg' : 5, 'pour' : 9}, {'pour' : 9, 'geeks' : 8, 'Meilleur' : 2} Explication : Trié par valeurs, par ordre croissant et inverse.
Cas 1 : Trier par clés
Cette tâche est effectuée à l'aide de sorted(), en cela, nous extrayons les clés en utilisant le 1er index des éléments du dictionnaire extrait par items(), et le transmettons dans la clé en tant que fonction lambda personnalisée pour être triées par clés. Le reverse=True est ajouté pour effectuer un tri inversé.
Python3
# Python3 code to demonstrate working of> # Sort a Dictionary> # Sort by Keys> # initializing dictionary> test_dict> => {> 'Gfg'> :> 5> ,> 'is'> :> 7> ,> 'Best'> :> 2> ,> 'for'> :> 9> ,> 'geeks'> :> 8> }> # printing original dictionary> print> (> 'The original dictionary is : '> +> str> (test_dict))> # using items() to get all items> # lambda function is passed in key to perform sort by key> res> => {key: val> for> key, val> in> sorted> (test_dict.items(), key> => lambda> ele: ele[> 0> ])}> # printing result> print> (> 'Result dictionary sorted by keys : '> +> str> (res))> # using items() to get all items> # lambda function is passed in key to perform sort by key> # adding 'reversed = True' for reversed order> res> => {key: val> for> key, val> in> sorted> (test_dict.items(), key> => lambda> ele: ele[> 0> ], reverse> => True> )}> # printing result> print> (> 'Result dictionary sorted by keys ( in reversed order ) : '> +> str> (res))> |
>
>Sortir
The original dictionary is : {'Gfg': 5, 'is': 7, 'Best': 2, 'for': 9, 'geeks': 8} Result dictionary sorted by keys : {'Best': 2, 'Gfg': 5, 'for': 9, 'geeks': 8, 'is': 7} Result dictionary sorted by keys ( in reversed order ) : {'is': 7, 'geeks': 8, 'for': 9, 'Gfg': 5, 'Best': 2}>
Cas 2 : Trier par valeurs
Cette tâche peut être effectuée de la même manière que ci-dessus, la seule différence étant l'extraction des valeurs, le 2ème élément de items() est passé comme comparateur.
Python3
# Python3 code to demonstrate working of> # Sort a Dictionary> # Sort by Values> # initializing dictionary> test_dict> => {> 'Gfg'> :> 5> ,> 'is'> :> 7> ,> 'Best'> :> 2> ,> 'for'> :> 9> ,> 'geeks'> :> 8> }> # printing original dictionary> print> (> 'The original dictionary is : '> +> str> (test_dict))> # using items() to get all items> # lambda function is passed in key to perform sort by key> # passing 2nd element of items()> res> => {key: val> for> key, val> in> sorted> (test_dict.items(), key> => lambda> ele: ele[> 1> ])}> # printing result> print> (> 'Result dictionary sorted by values : '> +> str> (res))> # using items() to get all items> # lambda function is passed in key to perform sort by key> # passing 2nd element of items()> # adding 'reversed = True' for reversed order> res> => {key: val> for> key, val> in> sorted> (test_dict.items(), key> => lambda> ele: ele[> 1> ], reverse> => True> )}> # printing result> print> (> 'Result dictionary sorted by values ( in reversed order ) : '> +> str> (res))> |
>
>Sortir
The original dictionary is : {'Gfg': 5, 'is': 7, 'Best': 2, 'for': 9, 'geeks': 8} Result dictionary sorted by values : {'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} Result dictionary sorted by values ( in reversed order ) : {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}>
Méthode n°3 : Utilisation de collections.OrderedDict() et sorted()
Approche
cette approche utilise la fonction sorted() pour trier un dictionnaire par ses valeurs par ordre croissant ou décroissant. La fonction sorted() est appelée avec la méthode items() du dictionnaire et une fonction key qui renvoie le deuxième élément de chaque tuple (c'est-à-dire les valeurs) ou leur négation. La liste de tuples résultante est transmise au constructeur OrderedDict() pour créer un nouveau dictionnaire ordonné avec les mêmes paires clé-valeur que le dictionnaire d'origine mais trié par valeur.
Algorithme
1. Appelez la fonction sorted() sur le dictionnaire « test_dict », en passant une fonction lambda comme argument « clé ».
2. La fonction lambda prend chaque paire clé-valeur en entrée et renvoie la clé ou la valeur à trier, en fonction de l'ordre souhaité.
3. Utilisez la fonction sorted() pour renvoyer une liste de paires clé-valeur triées.
4. Transmettez la liste triée au constructeur OrderedDict() pour créer un nouveau dictionnaire ordonné.
5. Renvoyez le dictionnaire ordonné.
Python3
from> collections> import> OrderedDict> from> operator> import> itemgetter> def> sort_dict_by_value(test_dict):> > sorted_list> => sorted> (test_dict.items(), key> => itemgetter(> 1> ))> > return> OrderedDict(sorted_list)> def> sort_dict_by_value_reverse(test_dict):> > sorted_list> => sorted> (test_dict.items(), key> => itemgetter(> 1> ), reverse> => True> )> > return> OrderedDict(sorted_list)> test_dict> => {> 'Gfg'> :> 5> ,> 'is'> :> 7> ,> 'Best'> :> 2> ,> 'for'> :> 9> ,> 'geeks'> :> 8> }> print> (sort_dict_by_value(test_dict))> print> (sort_dict_by_value_reverse(test_dict))> |
>
>Sortir
OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])>
Complexité temporelle : O (N log N), où N est le nombre de paires clé-valeur dans le dictionnaire.
Complexité spatiale : O(N), car nous créons un nouveau dictionnaire ordonné pour stocker les paires clé-valeur triées.
Méthode 4 : utilisez la méthode sorted() avec une fonction lambda comme paramètre clé.
Voici les étapes :
- Définissez le dictionnaire à trier.
- Utilisez la méthode sorted() pour trier le dictionnaire par valeurs.
- Passez une fonction lambda comme paramètre clé à la méthode sorted() pour spécifier que le tri doit être effectué par valeurs.
- Utilisez le constructeur dict() pour créer un nouveau dictionnaire à partir de la liste triée de tuples.
Python3
les meilleures voitures du monde
def> sort_dict_by_value_lambda(test_dict):> > sorted_list> => sorted> (test_dict.items(), key> => lambda> x: x[> 1> ])> > return> dict> (sorted_list)> def> sort_dict_by_value_lambda_reverse(test_dict):> > sorted_list> => sorted> (test_dict.items(), key> => lambda> x: x[> 1> ], reverse> => True> )> > return> dict> (sorted_list)> test_dict> => {> 'Gfg'> :> 5> ,> 'is'> :> 7> ,> 'Best'> :> 2> ,> 'for'> :> 9> ,> 'geeks'> :> 8> }> print> (sort_dict_by_value_lambda(test_dict))> print> (sort_dict_by_value_lambda_reverse(test_dict))> |
>
>Sortir
{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}>
Complexité temporelle : O(n log n) où n est le nombre d'éléments dans le dictionnaire.
Espace auxiliaire : O(n) pour stocker la liste triée des tuples. Le constructeur dict() prend un temps O(n) pour créer un nouveau dictionnaire à partir de la liste triée.