Python, Kun sanakirja on annettu, suorita lajittelu avaimien tai arvojen perusteella. [ sovellettavissa Python>=3.6v ].
Syöte : test_dict = {Gfg : 5, on : 7, Paras : 2} Lähtö : {'Paras': 2, 'Gfg': 5, 'on': 7}, {'on': 7, 'Gfg': 5, 'Paras': 2} Selitys : Lajiteltu näppäinten mukaan, nousevassa ja käänteisessä järjestyksessä. Syöte : test_dict = {Paras : 2, : 9, nörtti : 8} Lähtö : {'Paras': 2, 'Gfg': 5, 'for': 9}, {'for': 9, 'Greeks': 8, 'Paras': 2} Selitys : Lajiteltu arvojen mukaan nousevassa ja käänteisessä järjestyksessä.
Tapaus 1: Lajittele avainten mukaan
Tämä tehtävä suoritetaan komennolla sorted(), tässä poimimme avaimet käyttämällä ykkösindeksiä sanakirjan kohteista, jotka on purettu items() -toiminnolla ja välitämme sen avaimeen mukautettuna lambda-funktiona, jotta ne lajitellaan avainten mukaan. Reverse=True lisätään käänteisen lajittelun suorittamiseksi.
Python 3
# 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))> |
>
>Lähtö
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}>
Tapaus 2: Lajittele arvojen mukaan
Tämä tehtävä voidaan suorittaa samalla tavalla kuin edellä, ainoa ero on arvojen poimimisessa, 2nd element of items() välitetään vertailijana.
Python 3
# 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))> |
>
>Lähtö
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}>
Menetelmä 3: Kokoelmien käyttäminen.OrderedDict() and sorted()
Lähestyä
Tämä lähestymistapa käyttää sorted()-funktiota lajittelemaan sanakirjaa sen arvojen mukaan joko nousevaan tai laskevaan järjestykseen. Sorted()-funktiota kutsutaan sanakirjan items()-metodilla ja avainfunktiolla, joka palauttaa jokaisen monikon toisen elementin (eli arvot) tai niiden negatiivisen. Tuloksena oleva monikkoluettelo välitetään OrderedDict()-konstruktorille uuden järjestetyn sanakirjan luomiseksi, jossa on samat avainarvoparit kuin alkuperäinen sanakirja, mutta lajiteltu arvon mukaan.
Algoritmi
1. Kutsu sanakirjassa olevaa sorted()-funktiota 'test_dict' välittäen lambda-funktion 'avain'-argumentiksi.
2. Lambda-funktio ottaa jokaisen avain-arvo-parin syötteeksi ja palauttaa avaimen tai arvon, jonka mukaan lajitellaan halutun järjestyksen mukaan.
3. Käytä sorted()-funktiota palauttaaksesi luettelon järjestetyistä avainarvopareista.
4. Luo uusi järjestetty sanakirja välittämällä lajiteltu luettelo OrderedDict()-konstruktorille.
5. Palauta tilattu sanakirja.
Python 3
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))> |
>
>Lähtö
OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])>
Aika monimutkaisuus: O(N log N), missä N on avainarvoparien lukumäärä sanakirjassa.
Tilan monimutkaisuus: O(N), koska luomme uuden järjestetyn sanakirjan tallentamaan lajitellut avainarvoparit.
Menetelmä 4: käytä sorted()-menetelmää lambda-funktiolla avainparametrina.
Tässä ovat vaiheet:
- Määritä lajiteltava sanakirja.
- Käytä sorted()-menetelmää lajitellaksesi sanakirjan arvojen mukaan.
- Välitä lambda-funktio avainparametriksi sorted()-metodille määrittääksesi, että lajittelu tulee tehdä arvojen mukaan.
- Käytä dict()-konstruktoria luodaksesi uuden sanakirjan lajitetusta monikkoluettelosta.
Python 3
vektorin koko c++
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))> |
>
>Lähtö
{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}>
Aika monimutkaisuus: O(n log n), jossa n on sanakirjan kohteiden lukumäärä.
Aputila: O(n) tallentaa lajiteltujen monikoiden luettelon. dict()-konstruktorilla kestää O(n) aikaa luoda uusi sanakirja lajiteltusta luettelosta.