Python, daný slovník, provádějte řazení na základě klíčů nebo hodnot. [ použitelné Python>=3.6v ].
Vstup : test_dict = {Gfg : 5, je : 7, Nejlepší : 2} Výstup : {‘Nejlepší‘: 2, ‚Gfg‘: 5, ‚je‘: 7}, {‘je‘: 7, ‚Gfg‘: 5, ‚Nejlepší‘: 2} Vysvětlení : Seřazeno podle klíčů, ve vzestupném a opačném pořadí. Vstup : test_dict = {Nejlepší : 2, pro : 9, geekové : 8} Výstup : {‘Nejlepší‘: 2, ‚Gfg‘: 5, ‚pro‘: 9}, {‘pro‘: 9, ‚geekové‘: 8, ‚Nejlepší‘: 2} Vysvětlení : Seřazeno podle hodnot ve vzestupném a opačném pořadí.
Případ 1: Seřadit podle klíčů
Tento úkol se provádí pomocí sort(), v tomto extrahujeme klíče pomocí 1. indexu položek slovníku extrahovaných pomocí items() a předáme jej v klíči jako vlastní lambda funkci, abychom se seřadili podle klíčů. Reverse=True je přidán k provedení zpětného řazení.
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))> |
>
>Výstup
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}>
Případ 2: Seřadit podle hodnot
Tento úkol lze provést podobným způsobem jako výše, jediný rozdíl je v extrakci hodnot, 2. prvek items() je předán jako komparátor.
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))> |
>
>Výstup
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: Použití collections.OrderedDict() a sorted()
Přístup
tento přístup používá funkci sort() k řazení slovníku podle jeho hodnot ve vzestupném nebo sestupném pořadí. Funkce sort() se volá metodou items() slovníku a klíčovou funkcí, která vrací druhý prvek každé n-tice (tj. hodnoty) nebo jejich negaci. Výsledný seznam n-tic je předán konstruktoru OrderedDict() k vytvoření nového uspořádaného slovníku se stejnými páry klíč–hodnota jako původní slovník, ale seřazených podle hodnoty.
Algoritmus
1. Zavolejte funkci sort() ve slovníku ‚test_dict‘ a předejte funkci lambda jako argument ‚key‘.
2. Funkce lambda bere každý pár klíč–hodnota jako vstup a vrací klíč nebo hodnotu, podle které se má třídit, v závislosti na požadovaném pořadí.
3. Pomocí funkce sorted() vrátíte seznam seřazených párů klíč–hodnota.
4. Předejte seřazený seznam konstruktoru OrderedDict() a vytvořte nový uspořádaný slovník.
5. Vraťte objednaný slovník.
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))> |
>
>Výstup
OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])>
Časová složitost: O(N log N), kde N je počet párů klíč–hodnota ve slovníku.
Prostorová složitost: O(N), protože vytváříme nový uspořádaný slovník pro ukládání seřazených párů klíč–hodnota.
Metoda 4: použijte metodu sorted() s funkcí lambda jako klíčovým parametrem.
Zde jsou kroky:
- Definujte slovník, který chcete třídit.
- Pomocí metody sort() seřaďte slovník podle hodnot.
- Předejte funkci lambda jako klíčový parametr metodě sort() k určení, že řazení má být provedeno podle hodnot.
- Pomocí konstruktoru dict() vytvořte nový slovník ze seřazeného seznamu n-tic.
Python3
funkce v 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))> |
>
>Výstup
{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}>
Časová složitost: O(n log n) kde n je počet položek ve slovníku.
Pomocný prostor: O(n) pro uložení seřazeného seznamu n-tic. Konstruktor dict() trvá O(n) čas, než vytvoří nový slovník ze seřazeného seznamu.