logo

Python | Rūšiuoti žodyną

Python, atsižvelgiant į žodyną, atlikti rūšiavimą, remiantis raktais arba reikšmėmis. [ taikomas Python> = 3,6 V ].

Įvestis : test_dict = {Gfg : 5, yra : 7, Geriausias : 2} Išvestis : {„Geriausias“: 2, „Gfg“: 5, „yra“: 7}, {„yra“: 7, „Gfg“: 5, „Geriausias“: 2} Paaiškinimas : Rūšiuojama pagal klavišus, didėjančia ir atvirkštine tvarka. Įvestis : test_dict = {Geriausias: 2, skirtas: 9, geeks: 8} Išvestis : {„Geriausias“: 2, „Gfg“: 5, „už“: 9}, {„už“: 9, „geeks“: 8, „Geriausias“: 2} Paaiškinimas : surūšiuota pagal reikšmes, didėjančia ir atvirkštine tvarka.



1 atvejis: Rūšiuoti pagal raktus

Ši užduotis atliekama naudojant sorted(), šiuo metu mes ištraukiame raktus naudodami 1-ąjį žodyno elementų indeksą, ištrauktą pagal items(), ir perduodame jį į raktą kaip pasirinktinę lambda funkciją, kad būtų galima surūšiuoti pagal raktus. Reverse=True pridedama, kad būtų galima rūšiuoti atvirkštiniu būdu.

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))>

>

>

Išvestis

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 atvejis : Rūšiuoti pagal reikšmes

Šią užduotį galima atlikti panašiai kaip aukščiau, vienintelis skirtumas yra tas, kad išgaunant reikšmes, 2-asis elementų elementas() perduodamas kaip lyginamoji priemonė.

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))>

>

>

Išvestis

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}>

3 metodas: kolekcijų naudojimas.OrderedDict() and sorted()

metodas

šis metodas naudoja funkciją sorted() rūšiuoti žodyną pagal jo reikšmes didėjimo arba mažėjimo tvarka. Funkcija sorted() iškviečiama naudojant žodyno elementų() metodą ir rakto funkciją, kuri grąžina antrą kiekvienos eilės elementą (t. y. reikšmes) arba jų neigimą. Gautas kortelių sąrašas perduodamas OrderedDict() konstruktoriui, kad būtų sukurtas naujas sutvarkytas žodynas su tomis pačiomis raktų ir reikšmių poromis kaip ir pradinis žodynas, bet surūšiuotas pagal reikšmę.

Algoritmas

1. Iškvieskite funkciją sorted() žodyne „test_dict“, perduodant lambda funkciją kaip „rakto“ argumentą.
2. Funkcija lambda paima kiekvieną rakto-reikšmių porą kaip įvestį ir grąžina raktą arba reikšmę, pagal kurią reikia rūšiuoti, atsižvelgiant į norimą tvarką.
3. Norėdami grąžinti surūšiuotų raktų ir reikšmių porų sąrašą, naudokite funkciją sorted().
4. Perduokite surūšiuotą sąrašą į OrderedDict() konstruktorių, kad sukurtumėte naują sutvarkytą žodyną.
5. Grąžinkite užsakytą žodyną.

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))>

>

>

Išvestis

OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])>

Laiko sudėtingumas: O(N log N), kur N yra raktų ir reikšmių porų skaičius žodyne.
Erdvės sudėtingumas: O(N), nes kuriame naują tvarkingą žodyną surūšiuotoms raktų ir reikšmių poroms saugoti.

4 metodas: naudokite metodą sorted() su lambda funkcija kaip pagrindiniu parametru.

Štai žingsniai:

  1. Apibrėžkite rūšiuojamą žodyną.
  2. Norėdami rūšiuoti žodyną pagal reikšmes, naudokite metodą sorted().
  3. Perduokite lambda funkciją kaip pagrindinį parametrą sorted() metodui, kad nurodytumėte, jog rūšiavimas turi būti atliekamas pagal vertes.
  4. Naudokite dict() konstruktorių, kad sukurtumėte naują žodyną iš surūšiuoto eilučių sąrašo.

Python3


java yra lygi



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))>

>

>

Išvestis

{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}>

Laiko sudėtingumas: O(n log n), kur n yra elementų skaičius žodyne.

Pagalbinė erdvė: O(n) surūšiuotam kortelių sąrašui saugoti. Dict() konstruktorius užtrunka O(n) laiko, kad sukurtų naują žodyną iš surūšiuoto sąrašo.