Python, dado un diccionario, realiza la clasificación, en función de claves o valores. [Python aplicable>=3.6v].
Aporte : test_dict = {Gfg: 5, es: 7, Mejor: 2} Producción : {'Mejor': 2, 'Gfg': 5, 'es': 7}, {'es': 7, 'Gfg': 5, 'Mejor': 2} Explicación : Ordenados por claves, en orden ascendente e inverso. Aporte : test_dict = {Mejor: 2, para: 9, geeks: 8} Producción : {'Mejor': 2, 'Gfg': 5, 'para': 9}, {'para': 9, 'geeks': 8, 'Mejor': 2} Explicación : Ordenado por valores, en orden ascendente e inverso.
Caso 1: Ordenar por claves
Esta tarea se realiza usando sorted(), en esto, extraemos las claves usando el primer índice de elementos del diccionario extraídos por items() y lo pasamos en clave como función lambda personalizada para ordenar por claves. Se agrega reverse=True para realizar una ordenación inversa.
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))> |
>
>Producción
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}>
Caso 2: Ordenar por valores
Esta tarea se puede realizar de manera similar a la anterior, la única diferencia es que para extraer valores, el segundo elemento de items() se pasa como comparador.
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))> |
>
>Producción
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}>
Método n.º 3: uso de colecciones.OrderedDict() y sorted()
Acercarse
este enfoque utiliza la función sorted() para ordenar un diccionario por sus valores en orden ascendente o descendente. La función sorted() se llama con el método items() del diccionario y una función clave que devuelve el segundo elemento de cada tupla (es decir, los valores) o su negación. La lista resultante de tuplas se pasa al constructor OrderedDict() para crear un nuevo diccionario ordenado con los mismos pares clave-valor que el diccionario original pero ordenado por valor.
Algoritmo
1. Llame a la función sorted() en el diccionario 'test_dict', pasando una función lambda como argumento 'clave'.
2. La función lambda toma cada par clave-valor como entrada y devuelve la clave o valor para ordenar, según el orden deseado.
3. Utilice la función sorted() para devolver una lista de pares clave-valor ordenados.
4. Pase la lista ordenada al constructor OrderedDict() para crear un nuevo diccionario ordenado.
5. Devuelva el diccionario solicitado.
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))> |
>
>Producción
OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])>
Complejidad del tiempo: O (N log N), donde N es el número de pares clave-valor en el diccionario.
Complejidad espacial: O (N), ya que estamos creando un nuevo diccionario ordenado para almacenar los pares clave-valor ordenados.
Método 4: utilice el método sorted() con una función lambda como parámetro clave.
Aquí están los pasos:
- Defina el diccionario que se va a ordenar.
- Utilice el método sorted() para ordenar el diccionario por valores.
- Pase una función lambda como parámetro clave al método sorted() para especificar que la clasificación debe realizarse por valores.
- Utilice el constructor dict() para crear un nuevo diccionario a partir de la lista ordenada de tuplas.
Python3
sqrt java matemáticas
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))> |
>
>Producción
{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}>
Complejidad del tiempo: O (n log n) donde n es el número de elementos del diccionario.
Espacio auxiliar: O(n) para almacenar la lista ordenada de tuplas. El constructor dict() tarda O(n) tiempo en crear un nuevo diccionario a partir de la lista ordenada.