logo

Python | Sorter en ordbok

Python, gitt en ordbok, utfør sortering, basert på nøkler eller verdier. [gjeldende Python>=3.6v ].

Inndata : test_dict = {Gfg : 5, er : 7, Best : 2} Produksjon : {'Best': 2, 'Gfg': 5, 'is': 7}, {'is': 7, 'Gfg': 5, 'Best': 2} Forklaring : Sortert etter taster, i stigende og omvendt rekkefølge. Inndata : test_dict = {Best : 2, for : 9, nerder : 8} Produksjon : {'Best': 2, 'Gfg': 5, 'for': 9}, {'for': 9, 'geeks': 8, 'Best': 2} Forklaring : Sortert etter verdier, i stigende og omvendt rekkefølge.



Tilfelle 1 : Sorter etter nøkler

Denne oppgaven utføres ved å bruke sorted(), i denne trekker vi ut nøklene ved å bruke 1. indeks over elementer i ordboken ekstrahert av items(), og sender den inn i nøkkelen som tilpasset lambda-funksjon for å bli sortert etter nøkler. Reverse=True legges til for å utføre omvendt sortering.

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

>

>

Produksjon

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

Tilfelle 2 : Sorter etter verdier

Denne oppgaven kan utføres på lignende måte som ovenfor, den eneste forskjellen er for å trekke ut verdier, andre element av items() sendes som komparator.

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

>

>

Produksjon

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

Metode#3:Bruke collections.OrderedDict() og sorted()

Nærme seg

denne tilnærmingen bruker sortered()-funksjonen for å sortere en ordbok etter verdiene i enten stigende eller synkende rekkefølge. Sorted()-funksjonen kalles med items()-metoden i ordboken og en nøkkelfunksjon som returnerer det andre elementet i hver tuppel (dvs. verdiene) eller deres negasjon. Den resulterende listen over tupler sendes til OrderedDict()-konstruktøren for å lage en ny ordnet ordbok med de samme nøkkelverdi-parene som den opprinnelige ordboken, men sortert etter verdi.

Algoritme

1. Kall sortert()-funksjonen i ordboken «test_dict», og send en lambda-funksjon som «nøkkel»-argument.
2. Lambda-funksjonen tar hvert nøkkel-verdi-par som input og returnerer nøkkelen eller verdien for å sortere etter, avhengig av ønsket rekkefølge.
3. Bruk funksjonen sorted() for å returnere en liste over sorterte nøkkelverdi-par.
4. Send den sorterte listen til OrderedDict()-konstruktøren for å lage en ny ordnet ordbok.
5. Returner den bestilte ordboken.

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

>

>

Produksjon

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

Tidskompleksitet: O(N log N), der N er antall nøkkelverdi-par i ordboken.
Romkompleksitet: O(N), ettersom vi lager en ny ordnet ordbok for å lagre de sorterte nøkkelverdi-parene.

Metode 4: bruk sorted()-metoden med en lambda-funksjon som nøkkelparameter.

Her er trinnene:

  1. Definer ordboken som skal sorteres.
  2. Bruk sorted()-metoden for å sortere ordboken etter verdier.
  3. Send en lambda-funksjon som nøkkelparameter til sorted()-metoden for å spesifisere at sorteringen skal gjøres etter verdier.
  4. Bruk dict()-konstruktøren til å lage en ny ordbok fra den sorterte listen over tupler.

Python3


maskinlæringsmodeller



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

>

>

Produksjon

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

Tidskompleksitet: O(n log n) hvor n er antall elementer i ordboken.

Hjelpemellomrom: O(n) for å lagre den sorterte listen over tupler. dict()-konstruktøren bruker O(n) tid på å lage en ny ordbok fra den sorterte listen.