Diferentes formas de ordenar Diccionario por valores y Ordenación inversa por valores

Prerrequisito: Diccionarios en Python

Un diccionario es una colección desordenada, modificable e indexada. En Python , los diccionarios se escriben con corchetes y tienen claves y valores. Podemos acceder a los valores del diccionario usando claves. En este artículo, se analizan 10 formas diferentes de ordenar el diccionario de Python por valores y también la ordenación inversa por valores.

Uso de la función lambda junto con items() y sorted() : la función lambda devuelve la clave (elemento 0 ) para una tupla de elemento específica. Cuando se pasan al método sorted() , devuelve una secuencia ordenada que luego se escribe -casted en un diccionario . El método keys() devuelve un objeto de vista que muestra una lista de todas las claves del diccionario . sorted() se usa para ordenar las claves del diccionario .

Ejemplos:

Entrada: my_dict = {2: ‘tres’, 1: ‘dos’} 
Salida: [(2, ‘tres’), (1, ‘dos’)] 

A continuación se muestra la implementación utilizando la función lambda:

Python3

# Python program to sort dictionary
# by value using lambda function
 
# Initialize a dictionary
my_dict = {2: 'three',
           1: 'two'}
 
# Sort the dictionary
sorted_dict = sorted(
  my_dict.items(),
  key = lambda kv: kv[1])
 
# Print sorted dictionary
print("Sorted dictionary is :",
      sorted_dict)
Producción

Sorted dictionary is : [(2, 'three'), (1, 'two')]

Uso de elements() solo : el método elements() se usa solo con dos variables, es decir, clave y valor para ordenar el diccionario por valor.

Ejemplos:

Entrada: my_dict = {‘c’: 3, ‘a’: 1, ‘d’: 4, ‘b’: 2}
Salida: [(1, ‘a’), (2, ‘b’), (3 , ‘c’), (4, ‘d’)] 
 

A continuación se muestra la implementación usando el método items():

Python3

# Python program to sort dictionary
# by value using item function
 
# Initialize a dictionary
my_dict = {'c': 3,
           'a': 1,
           'd': 4,
           'b': 2}
 
# Sorting dictionary
sorted_dict = sorted([(value, key)
 for (key, value) in my_dict.items()])
 
# Print sorted dictionary
print("Sorted dictionary is :")
print(sorted_dict)
Producción

Sorted dictionary is :
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]

Usando sorted() y get() : El método get() devuelve el valor de la clave dada, si está presente en el diccionario. Si no, devolverá None .

Ejemplos:

Entrada: my_dict = {‘red’:’#FF0000′, ‘green’:’#008000′, ‘black’:’#000000′, ‘white’:’#FFFFFF’} 
Salida: 
negro #000000 
verde #008000 
rojo #FF0000 
blanco #FFFFFF  

A continuación se muestra la implementación utilizando los métodos sorted() y get():

Python3

# Python program to sort dictionary
# by value using sorted() and get()
 
# Initialize a dictionary
my_dict = {'red': '# FF0000', 'green': '# 008000',
           'black': '# 000000', 'white': '# FFFFFF'}
 
# Sort and print dictionary
print("Sorted dictionary is :")
for w in sorted(my_dict, key = my_dict.get):
    print(w, my_dict[w])
Producción

Sorted dictionary is :
black # 000000
green # 008000
red # FF0000
white # FFFFFF

Usando itemgetter del operador :

El método itemgetter(n) construye un invocable que asume un objeto iterable como entrada y extrae el n-ésimo elemento de él.

Ejemplos

Entrada: 
my_dict = {‘a’: 23, ‘g’: 67, ‘e’: 12, 45: 90} 
Salida: 
[(‘e’, 12), (‘a’, 23), (‘g’ , 67), (45, 90)] 
 

A continuación se muestra el programa python para ordenar el diccionario usando itemgetter(): 

Python3

# Python program to sort dictionary
# by value using itemgetter() function
 
# Importing OrderedDict
import operator
 
# Initialize a dictionary
my_dict = {'a': 23,
           'g': 67,
           'e': 12,
           45: 90}
 
# Sorting dictionary
sorted_dict = sorted(my_dict.items(), \
             key = operator.itemgetter(1))
 
# Printing sorted dictionary
print("Sorted dictionary is :")
print(sorted_dict)
Producción

Sorted dictionary is :
[('e', 12), ('a', 23), ('g', 67), (45, 90)]

Uso de OrderedDict de colecciones : OrderedDictes una clase de biblioteca estándar, que se encuentra en el módulo de colecciones . OrderedDict mantiene las órdenes de las claves tal como se insertan.

Ejemplos:

Entrada: my_dict = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0} 
Salida: [(0, 0), (2, 1), (1, 2), (4, 3 ), (3, 4)]
 

A continuación se muestra la implementación utilizando Ordered Dict:

Python3

# Python program to sort dictionary
# by value using OrderedDict
 
# Import OrderedDict
from collections import OrderedDict
 
# Initialize a dictionary
my_dict = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
 
# Sort dictionary
sorted_dict = OrderedDict(sorted(\
  my_dict.items(), key = lambda x: x[1]))
 
# Print the sorted dictionary
print("Sorted dcitonary is :")
print(sorted_dict)
Producción

Sorted dcitonary is :
OrderedDict([(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)])

Uso de Counter from collections : el contador es una colección desordenada donde los elementos se almacenan como claves Dict y su cuenta como valor dict. El recuento de elementos de contador puede ser enteros positivos, cero o negativos.

Ejemplos: 

Entrada: my_dict = {‘hola’: 1, ‘python’: 5, ‘mundo’: 3}
Salida: [(‘hola’, 1), (‘mundo’, 3), (‘python’, 5)] 
 

A continuación se muestra la implementación utilizando Counter from collections:

Python3

# Python program to sort dictionary
# by value using OrderedDict
 
# Import Counter
from collections import Counter
 
# Initialize a dictionary
my_dict = {'hello': 1, 'python': 5, 'world': 3}
 
# Sort and print the dictionary
sorted_dict = Counter(my_dict)
print("Sorted dictionary is :")
print(sorted_dict.most_common()[::-1])
Producción

Sorted dictionary is :
[('hello', 1), ('world', 3), ('python', 5)]

Diccionario de clasificación inversa por valores : la misma sintaxis para la clasificación ordenada ascendente y descendente. Para la ordenación inversa, la idea es usar reverse = true. con la función sorted() .

Ejemplos:

Entrada: 
my_dict = {‘red’:’#FF0000′, 
‘green’:’#008000′, 
‘black’:’#000000′, 
‘white’:’#FFFFFF’} 
Salida: 
negro #000000 
verde #008000 
rojo #FF0000 
blanco #FFFFFF 
 

A continuación se muestra la implementación utilizando el diccionario de clasificación inversa por valores:

Python3

# Python program to sort dictionary
# by value using sorted setting
# reverse parameter to true
 
# Initialize a dictionary
my_dict = {'red': '# FF0000', 'green': '# 008000',
           'black': '# 000000', 'white': '# FFFFFF'}
 
# Sort and print the dictionary
print("Sorted dictionary is :")
for w in sorted(my_dict, key = my_dict.get, \
                reverse = True):
    print(w, my_dict[w])
Producción

Sorted dictionary is :
white # FFFFFF
red # FF0000
green # 008000
black # 000000

Publicación traducida automáticamente

Artículo escrito por venniladeenan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *