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.