logo

Python | Kārtot vārdnīcu

Python, ņemot vērā vārdnīcu, veiciet kārtošanu, pamatojoties uz taustiņiem vai vērtībām. [ piemērojams Python>=3,6v ].

Ievade : test_dict = {Gfg : 5, ir : 7, Labākais : 2} Izvade : {'Labākais': 2, 'Gfg': 5, 'ir': 7}, {'ir': 7, 'Gfg': 5, 'Labākais': 2} Paskaidrojums : sakārtots pēc taustiņiem, augošā un apgrieztā secībā. Ievade : test_dict = {Labākais : 2, par : 9, geeks : 8} Izvade : {'Labākais': 2, 'Gfg': 5, 'par': 9}, {'par': 9, 'geeks': 8, 'Labākais': 2} Paskaidrojums : sakārtots pēc vērtībām augošā un apgrieztā secībā.



1. gadījums: kārtot pēc taustiņiem

Šis uzdevums tiek veikts, izmantojot sorted(), šajā gadījumā mēs izņemam atslēgas, izmantojot 1. vārdnīcas vienumu indeksu, kas izvilkts pēc items(), un nododam to atslēgā kā pielāgotu lambda funkciju, lai sakārtotu pēc atslēgām. Reverse=True ir pievienots, lai veiktu apgriezto kārtošanu.

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

>

>

Izvade

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

2. gadījums: kārtot pēc vērtībām

Šo uzdevumu var veikt līdzīgi kā iepriekš, vienīgā atšķirība ir vērtību iegūšanai, 2. elementu elements () tiek nodots kā salīdzinājums.

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

>

>

Izvade

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

3. metode: Collections.OrderedDict() un sorted() izmantošana

Pieeja

šī pieeja izmanto funkciju sorted(), lai kārtotu vārdnīcu pēc tās vērtībām augošā vai dilstošā secībā. Funkcija sorted() tiek izsaukta ar vārdnīcas metodi items() un atslēgas funkciju, kas atgriež katra kortedža otro elementu (t.i., vērtības) vai to noliegumu. Iegūtais korešu saraksts tiek nodots konstruktoram OrderedDict(), lai izveidotu jaunu sakārtotu vārdnīcu ar tādiem pašiem atslēgu-vērtību pāriem kā sākotnējā vārdnīcā, bet sakārtoti pēc vērtības.

Algoritms

1. Izsauciet funkciju sorted() vārdnīcā “test_dict”, nododot lambda funkciju kā argumentu “key”.
2. Funkcija lambda izmanto katru atslēgu-vērtību pāri kā ievadi un atgriež atslēgu vai vērtību, pēc kuras kārtot, atkarībā no vēlamās secības.
3. Izmantojiet funkciju sorted(), lai atgrieztu sakārtoto atslēgu un vērtību pāru sarakstu.
4. Nododiet sakārtoto sarakstu konstruktoram OrderedDict(), lai izveidotu jaunu sakārtotu vārdnīcu.
5. Atgrieziet pasūtīto vārdnīcu.

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

>

>

Izvade

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

Laika sarežģītība: O(N log N), kur N ir atslēgu un vērtību pāru skaits vārdnīcā.
Telpas sarežģītība: O(N), jo mēs veidojam jaunu sakārtotu vārdnīcu, lai saglabātu sakārtotos atslēgu un vērtību pārus.

4. metode: izmantojiet metodi sorted() ar lambda funkciju kā galveno parametru.

Tālāk ir norādītas darbības.

  1. Definējiet kārtojamo vārdnīcu.
  2. Izmantojiet metodi sorted(), lai kārtotu vārdnīcu pēc vērtībām.
  3. Nododiet lambda funkciju kā galveno parametru metodei sorted(), lai norādītu, ka kārtošana jāveic pēc vērtībām.
  4. Izmantojiet dict() konstruktoru, lai izveidotu jaunu vārdnīcu no sakārtotā korešu saraksta.

Python3


cik unces ir 10 mililitri



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

>

>

Izvade

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

Laika sarežģītība: O(n log n), kur n ir vienumu skaits vārdnīcā.

Papildtelpa: O(n), lai saglabātu sakārtoto korešu sarakstu. Konstruktoram dict() ir nepieciešams O(n) laiks, lai no sakārtotā saraksta izveidotu jaunu vārdnīcu.