Python: Führen Sie bei einem gegebenen Wörterbuch eine Sortierung basierend auf Schlüsseln oder Werten durch. [ anwendbares Python>=3.6v ].
Eingang : test_dict = {Gfg: 5, ist: 7, Beste: 2} Ausgabe : {'Best': 2, 'Gfg': 5, 'is': 7}, {'is': 7, 'Gfg': 5, 'Best': 2} Erläuterung : Nach Schlüsseln sortiert, in aufsteigender und umgekehrter Reihenfolge. Eingang : test_dict = {Beste: 2, für: 9, Geeks: 8} Ausgabe : {'Best': 2, 'Gfg': 5, 'for': 9}, {'for': 9, 'geeks': 8, 'Best': 2} Erläuterung : Nach Werten sortiert, in aufsteigender und umgekehrter Reihenfolge.
Fall 1: Nach Schlüsseln sortieren
Diese Aufgabe wird mit sorted() ausgeführt. Dabei extrahieren wir die Schlüssel mithilfe des ersten Index der von items() extrahierten Elemente des Wörterbuchs und übergeben ihn als benutzerdefinierte Lambda-Funktion im Schlüssel, um nach Schlüsseln sortiert zu werden. Um eine umgekehrte Sortierung durchzuführen, wird „reverse=True“ hinzugefügt.
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))> |
>
>Ausgabe
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}>
Fall 2: Nach Werten sortieren
Diese Aufgabe kann auf ähnliche Weise wie oben ausgeführt werden. Der einzige Unterschied besteht darin, dass beim Extrahieren von Werten das 2. Element von items() als Komparator übergeben wird.
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))> |
>
>Ausgabe
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}>
Methode Nr. 3: Verwenden von Collections.OrderedDict() und sorted()
Ansatz
Bei diesem Ansatz wird die Funktion sorted() verwendet, um ein Wörterbuch nach seinen Werten entweder in aufsteigender oder absteigender Reihenfolge zu sortieren. Die Funktion sorted() wird mit der Methode items() des Wörterbuchs und einer Schlüsselfunktion aufgerufen, die das zweite Element jedes Tupels (d. h. die Werte) oder deren Negation zurückgibt. Die resultierende Tupelliste wird an den OrderedDict()-Konstruktor übergeben, um ein neues geordnetes Wörterbuch mit denselben Schlüssel-Wert-Paaren wie das ursprüngliche Wörterbuch, jedoch nach Wert sortiert, zu erstellen.
Algorithmus
1. Rufen Sie die Funktion sorted() für das Wörterbuch „test_dict“ auf und übergeben Sie eine Lambda-Funktion als „key“-Argument.
2. Die Lambda-Funktion nimmt jedes Schlüssel-Wert-Paar als Eingabe und gibt den Schlüssel oder Wert zurück, nach dem sortiert werden soll, abhängig von der gewünschten Reihenfolge.
3. Verwenden Sie die Funktion sorted(), um eine Liste sortierter Schlüssel-Wert-Paare zurückzugeben.
4. Übergeben Sie die sortierte Liste an den OrderedDict()-Konstruktor, um ein neues geordnetes Wörterbuch zu erstellen.
5. Geben Sie das bestellte Wörterbuch zurück.
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))> |
>
>Ausgabe
OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])>
Zeitkomplexität: O(N log N), wobei N die Anzahl der Schlüssel-Wert-Paare im Wörterbuch ist.
Raumkomplexität: O(N), da wir ein neues geordnetes Wörterbuch erstellen, um die sortierten Schlüssel-Wert-Paare zu speichern.
Methode 4: Verwenden Sie die Methode sorted() mit einer Lambda-Funktion als Schlüsselparameter.
Hier sind die Schritte:
- Definieren Sie das zu sortierende Wörterbuch.
- Verwenden Sie die Methode sorted(), um das Wörterbuch nach Werten zu sortieren.
- Übergeben Sie eine Lambda-Funktion als Schlüsselparameter an die Methode sorted(), um anzugeben, dass die Sortierung nach Werten erfolgen soll.
- Verwenden Sie den dict()-Konstruktor, um aus der sortierten Liste der Tupel ein neues Wörterbuch zu erstellen.
Python3
js mehrzeilige Zeichenfolge
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))> |
>
>Ausgabe
{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}>
Zeitkomplexität: O(n log n) wobei n die Anzahl der Elemente im Wörterbuch ist.
Hilfsraum: O(n) zum Speichern der sortierten Liste von Tupeln. Der dict()-Konstruktor benötigt O(n) Zeit, um aus der sortierten Liste ein neues Wörterbuch zu erstellen.