Python, vzhľadom na slovník, vykonáva triedenie na základe kľúčov alebo hodnôt. [ použiteľný Python>=3,6v ].
Vstup : test_dict = {Gfg : 5, je : 7, najlepšie : 2} Výkon : {‘Najlepšie‘: 2, ‚Gfg‘: 5, ‚je‘: 7}, {‘je‘: 7, ‚Gfg‘: 5, ‚Najlepšie‘: 2} Vysvetlenie : Zoradené podľa klávesov vo vzostupnom a opačnom poradí. Vstup : test_dict = {Najlepší : 2, pre : 9, nadšenci : 8} Výkon : {‚Najlepšie‘: 2, ‚Gfg‘: 5, ‚pre‘: 9}, {‘pre‘: 9, ‚geeks‘: 8, ‚Najlepšie‘: 2} Vysvetlenie : Zoradené podľa hodnôt vo vzostupnom a opačnom poradí.
Prípad 1: Zoradiť podľa kľúčov
Táto úloha sa vykonáva pomocou sorted(), v tomto extrahujeme kľúče pomocou 1. indexu položiek slovníka extrahovaných položkami() a odovzdávame ho v kľúči ako vlastnú lambda funkciu, aby sme ich zoradili podľa kľúčov. Reverse=True sa pridá na vykonanie spätného triedenia.
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))> |
>
>Výkon
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}>
Prípad 2: Zoradiť podľa hodnôt
Táto úloha môže byť vykonaná podobným spôsobom ako vyššie, jediný rozdiel je pri extrakcii hodnôt, 2. prvok items() je odovzdaný ako komparátor.
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))> |
>
>Výkon
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}>
Metóda č. 3: Použitie kolekcií.OrderedDict() a sorted()
Prístup
tento prístup používa funkciu sort() na triedenie slovníka podľa jeho hodnôt vo vzostupnom alebo zostupnom poradí. Funkcia sort() sa volá metódou items() slovníka a kľúčovou funkciou, ktorá vracia druhý prvok každej n-tice (t. j. hodnoty) alebo ich negáciu. Výsledný zoznam n-tic sa odovzdá konštruktoru OrderedDict() na vytvorenie nového usporiadaného slovníka s rovnakými pármi kľúč – hodnota ako pôvodný slovník, ale zoradených podľa hodnoty.
Algoritmus
1. Zavolajte funkciu sort() v slovníku „test_dict“, pričom ako argument „key“ odošlete funkciu lambda.
2. Funkcia lambda berie každý pár kľúč – hodnota ako vstup a vracia kľúč alebo hodnotu, podľa ktorej sa má zoradiť, v závislosti od požadovaného poradia.
3. Použite funkciu sorted() na vrátenie zoznamu zoradených párov kľúč – hodnota.
4. Odovzdajte zoradený zoznam konštruktoru OrderedDict() na vytvorenie nového usporiadaného slovníka.
5. Vráťte objednaný slovník.
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))> |
>
>Výkon
OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])>
Časová zložitosť: O(N log N), kde N je počet párov kľúč – hodnota v slovníku.
Priestorová zložitosť: O(N), keďže vytvárame nový usporiadaný slovník na ukladanie zoradených párov kľúč – hodnota.
Metóda 4: použite metódu sorted() s funkciou lambda ako kľúčovým parametrom.
Tu sú kroky:
- Definujte slovník, ktorý sa má triediť.
- Pomocou metódy sort() zoraďte slovník podľa hodnôt.
- Odovzdajte funkciu lambda ako kľúčový parameter metóde sort() na určenie, že triedenie by sa malo vykonávať podľa hodnôt.
- Pomocou konštruktora dict() vytvorte nový slovník zo zoradeného zoznamu n-tic.
Python3
abstraktná trieda v jazyku Java
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))> |
>
>Výkon
{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}>
Časová zložitosť: O(n log n), kde n je počet položiek v slovníku.
Pomocný priestor: O(n) na uloženie zoradeného zoznamu n-tic. Konštruktor dict() potrebuje čas O(n) na vytvorenie nového slovníka zo zoradeného zoznamu.