Python, givet en ordbog, udføre sortering, baseret på nøgler eller værdier. [ gældende Python>=3.6v ].
Input : test_dict = {Gfg : 5, er : 7, Bedste : 2} Produktion : {'Bedste': 2, 'Gfg': 5, 'er': 7}, {'er': 7, 'Gfg': 5, 'Bedste': 2} Forklaring : Sorteret efter taster, i stigende og omvendt rækkefølge. Input : test_dict = {Bedste : 2, for : 9, nørder : 8} Produktion : {'Bedste': 2, 'Gfg': 5, 'for': 9}, {'for': 9, 'nørder': 8, 'Bedste': 2} Forklaring : Sorteret efter værdier, i stigende og omvendt rækkefølge.
Tilfælde 1: Sorter efter nøgler
Denne opgave udføres ved hjælp af sorted(), i denne udtrækker vi nøglerne ved hjælp af 1. indeks over elementer i ordbogen ekstraheret af items(), og sender det i nøgle som tilpasset lambda-funktion for at blive sorteret efter nøgler. Reverse=True tilføjes for at udfø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))> |
>
>Produktion
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}> Tilfælde 2: Sorter efter værdier
Denne opgave kan udføres på samme måde som ovenfor, den eneste forskel er for at udtrække værdier, 2. element af 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))> |
>
>Produktion
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:Brug af collections.OrderedDict() og sorted()
Nærme sig
denne tilgang bruger funktionen sorted() til at sortere en ordbog efter dens værdier i enten stigende eller faldende rækkefølge. Sorted()-funktionen kaldes med items()-metoden i ordbogen og en nøglefunktion, der returnerer det andet element i hver tuple (dvs. værdierne) eller deres negation. Den resulterende liste over tupler sendes til OrderedDict()-konstruktøren for at skabe en ny ordnet ordbog med de samme nøgleværdi-par som den originale ordbog, men sorteret efter værdi.
Algoritme
1. Kald funktionen sorted() i ordbogen 'test_dict', og send en lambda-funktion som 'key'-argumentet.
2. Lambda-funktionen tager hvert nøgle-værdi-par som input og returnerer nøglen eller værdien til at sortere efter, afhængigt af den ønskede rækkefølge.
3. Brug funktionen sorted() til at returnere en liste over sorterede nøgleværdi-par.
4. Send den sorterede liste til OrderedDict()-konstruktøren for at oprette en ny ordnet ordbog.
5. Returner den bestilte ordbog.
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))> |
>
>Produktion
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), hvor N er antallet af nøgleværdi-par i ordbogen.
Rumkompleksitet: O(N), da vi opretter en ny ordnet ordbog til at gemme de sorterede nøgleværdi-par.
Metode 4: brug metoden sorted() med en lambda-funktion som nøgleparameter.
Her er trinene:
- Definer den ordbog, der skal sorteres.
- Brug metoden sorted() til at sortere ordbogen efter værdier.
- Send en lambda-funktion som nøgleparameter til sorted()-metoden for at angive, at sorteringen skal udføres efter værdier.
- Brug dict()-konstruktøren til at oprette en ny ordbog fra den sorterede liste over tupler.
Python3
kunstigt neurale netværk
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))> |
>
>Produktion
{'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 antallet af elementer i ordbogen.
Hjælpeplads: O(n) for at gemme den sorterede liste over tupler. dict()-konstruktøren tager O(n) tid til at oprette en ny ordbog fra den sorterede liste.