logo

Python | Razvrsti slovar

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:

  1. Določite slovar, ki ga želite razvrstiti.
  2. Za razvrščanje slovarja po vrednostih uporabite metodo sorted().
  3. Posredujte funkcijo lambda kot ključni parameter metodi sorted(), da določite, da naj se razvrščanje opravi po vrednostih.
  4. 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.