logo

Python | Zoradiť slovník

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:

  1. Definujte slovník, ktorý sa má triediť.
  2. Pomocou metódy sort() zoraďte slovník podľa hodnôt.
  3. Odovzdajte funkciu lambda ako kľúčový parameter metóde sort() na určenie, že triedenie by sa malo vykonávať podľa hodnôt.
  4. 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.