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:
- Definer ordboken som skal sorteres.
- Bruk sorted()-metoden for å sortere ordboken etter verdier.
- Send en lambda-funksjon som nøkkelparameter til sorted()-metoden for å spesifisere at sorteringen skal gjøres etter verdier.
- 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.