Python, Având în vedere un dicționar, efectuați sortarea, pe baza cheilor sau a valorilor. [ aplicabil Python>=3.6v ].
Intrare : test_dict = {Gfg : 5, este : 7, Cel mai bun : 2} Ieșire : {„Cel mai bun”: 2, „Gfg”: 5, „este”: 7}, {„este”: 7, „Gfg”: 5, „Cel mai bun”: 2} Explicaţie : Sortate după taste, în ordine crescătoare și inversă. Intrare : test_dict = {Cel mai bun : 2, pentru : 9, tocilari : 8} Ieșire : {„Cel mai bun”: 2, „Gfg”: 5, „pentru”: 9}, {„pentru”: 9, „înțelepți”: 8, „Cel mai bun”: 2} Explicaţie : Sortate după valori, în ordine crescătoare și inversă.
Cazul 1: Sortați după chei
Această sarcină este efectuată folosind sorted(), în aceasta, extragem cheile utilizând primul index al articolelor din dicționar extrase de itemi(), și îl transmitem în cheie ca funcție lambda personalizată pentru a fi sortate după chei. Reverse=True este adăugat pentru a efectua sortarea inversă.
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))> |
>
>Ieșire
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}> Cazul 2: Sortați după valori
Această sarcină poate fi efectuată în mod similar ca mai sus, singura diferență fiind pentru extragerea valorilor, al doilea element al itemilor () este trecut ca comparator.
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))> |
>
>Ieșire
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}> Metoda#3:Utilizarea colecțiilor.OrderedDict() și sortat()
Abordare
această abordare folosește funcția sorted() pentru a sorta un dicționar după valorile sale, fie în ordine crescătoare, fie în ordine descrescătoare. Funcția sorted() este apelată cu metoda items() din dicționar și cu o funcție cheie care returnează al doilea element al fiecărui tuplu (adică, valorile) sau negația acestora. Lista rezultată de tupluri este transmisă constructorului OrderedDict() pentru a crea un nou dicționar ordonat cu aceleași perechi cheie-valoare ca și dicționarul original, dar sortate după valoare.
Algoritm
1. Apelați funcția sorted() din dicționarul „test_dict”, trecând o funcție lambda drept argument „cheie”.
2. Funcția lambda preia fiecare pereche cheie-valoare ca intrare și returnează cheia sau valoarea de sortat, în funcție de ordinea dorită.
3. Utilizați funcția sorted() pentru a returna o listă de perechi cheie-valoare sortate.
4. Treceți lista sortată la constructorul OrderedDict() pentru a crea un nou dicționar ordonat.
5. Returnați dicționarul comandat.
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))> |
>
>Ieșire
OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])> Complexitatea timpului: O(N log N), unde N este numărul de perechi cheie-valoare din dicționar.
Complexitatea spațiului: O(N), deoarece creăm un nou dicționar ordonat pentru a stoca perechile cheie-valoare sortate.
Metoda 4: utilizați metoda sortat() cu o funcție lambda ca parametru cheie.
Iată pașii:
- Definiți dicționarul de sortat.
- Utilizați metoda sorted() pentru a sorta dicționarul după valori.
- Transmite o funcție lambda ca parametru cheie la metoda sorted() pentru a specifica că sortarea trebuie făcută după valori.
- Utilizați constructorul dict() pentru a crea un nou dicționar din lista sortată de tupluri.
Python3
string tokenizer java
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))> |
>
>Ieșire
{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}> Complexitatea timpului: O(n log n) unde n este numărul de articole din dicționar.
Spațiu auxiliar: O(n) pentru a stoca lista sortată de tupluri. Constructorul dict() ia O(n) timp pentru a crea un nou dicționar din lista sortată.