Python, glede na slovar izvede razvrščanje na podlagi ključev ali vrednosti. [ veljaven Python>=3.6v ].
Vnos : test_dict = {Gfg : 5, je : 7, Najboljše : 2} Izhod : {'Najboljše': 2, 'Gfg': 5, 'je': 7}, {'je': 7, 'Gfg': 5, 'Najboljše': 2} Pojasnilo : Razvrščeno po ključih v naraščajočem in obratnem vrstnem redu. Vnos : test_dict = {Najboljši: 2, za: 9, geeki: 8} Izhod : {'Najboljši': 2, 'Gfg': 5, 'za': 9}, {'za': 9, 'geeki': 8, 'Najboljši': 2} Razlaga : Razvrščeno po vrednostih v naraščajočem in obratnem vrstnem redu.
1. primer: Razvrsti po ključih
Ta naloga se izvede z uporabo sorted(), pri tem ekstrahiramo ključe s prvim indeksom postavk slovarja, ekstrahiranih z items(), in ga posredujemo ključu kot funkciji lambda po meri, da se razvrsti po ključih. Reverse=True je dodan za izvedbo obratnega razvrščanja.
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))> |
>
>Izhod
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}>
2. primer: Razvrsti po vrednostih
To nalogo je mogoče izvesti na podoben način kot zgoraj, edina razlika je v tem, da se pri pridobivanju vrednosti 2. element items() posreduje kot primerjalnik.
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))> |
>
>Izhod
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}>
Metoda št. 3: Uporaba zbirk. OrderedDict() in sorted()
Pristop
ta pristop uporablja funkcijo sorted() za razvrščanje slovarja po njegovih vrednostih v naraščajočem ali padajočem vrstnem redu. Funkcijo sorted() pokličemo z metodo items() iz slovarja in ključno funkcijo, ki vrne drugi element vsake tuple (tj. vrednosti) ali njihovo negacijo. Nastali seznam tuplov se posreduje konstruktorju OrderedDict(), da ustvari nov urejen slovar z enakimi pari ključ-vrednost kot prvotni slovar, vendar razvrščen po vrednosti.
Algoritem
1. Pokličite funkcijo sorted() v slovarju 'test_dict' in posredujte funkcijo lambda kot argument 'ključ'.
2. Funkcija lambda vzame vsak par ključ-vrednost kot vhod in vrne ključ ali vrednost za razvrščanje, odvisno od želenega vrstnega reda.
3. Uporabite funkcijo sorted(), da vrnete seznam razvrščenih parov ključ-vrednost.
4. Posredujte razvrščeni seznam konstruktorju OrderedDict(), da ustvarite nov urejen slovar.
5. Vrnite naročeni slovar.
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))> |
>
>Izhod
OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])>
Časovna kompleksnost: O(N log N), kjer je N število parov ključ-vrednost v slovarju.
Kompleksnost prostora: O(N), saj ustvarjamo nov urejen slovar za shranjevanje razvrščenih parov ključ-vrednost.
4. način: uporabite metodo sorted() s funkcijo lambda kot ključnim parametrom.
Tukaj so koraki:
- Določite slovar, ki ga želite razvrstiti.
- Za razvrščanje slovarja po vrednostih uporabite metodo sorted().
- Posredujte funkcijo lambda kot ključni parameter metodi sorted(), da določite, da naj se razvrščanje opravi po vrednostih.
- Uporabite konstruktor dict(), da ustvarite nov slovar iz razvrščenega seznama tupl.
Python3
25 od 100
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))> |
>
>Izhod
{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}>
Časovna kompleksnost: O(n log n), kjer je n število elementov v slovarju.
Pomožni prostor: O(n) za shranjevanje razvrščenega seznama tulp. Konstruktor dict() potrebuje O(n) časa, da ustvari nov slovar z razvrščenega seznama.