Python – Ordenar diccionario por tupla Producto clave

Dado un diccionario con claves de tupla, ordene los elementos del diccionario por producto de tupla de claves.

Entrada : test_dict = {(2, 3) : 3, (6, 3) : 9, (8, 4): 10, (10, 4): 12}
Salida : {(2, 3) : 3, (6 , 3): 9, (8, 4): 10, (10, 4): 12}
Explicación : 6 < 18 < 32 < 40, por lo tanto, los productos clave conservan el orden.

Entrada : test_dict = {(20, 3) : 3, (6, 3) : 9, (8, 4): 10, (10, 4): 12}
Salida : {(6, 3) : 9, (8 , 4): 10, (10, 4): 12, (20, 3) : 3, }
Explicación : 18 < 32 < 40 < 60, los productos clave por lo tanto ajustan el orden.

Método n. ° 1: usar la comprensión del diccionario + lambda + ordenado()

Esta es una de las formas en que se puede realizar esta tarea. En esto, realizamos sort() usando sorted() y la función lambda se usa para calcular el producto sobre el cual se puede realizar la clasificación.

Python3

# Python3 code to demonstrate working of 
# Sort dictionary by Tuple Key Product
# Using dictionary comprehension + sorted() + lambda
  
# initializing dictionary
test_dict = {(5, 6) : 3, (2, 3) : 9, (8, 4): 10, (6, 4): 12}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# sorted() over lambda computed product 
# dictionary comprehension reassigs dictionary by order 
res = {key: test_dict[key] for key in sorted(test_dict.keys(), key = lambda ele: ele[1] * ele[0])}
  
# printing result 
print("The sorted dictionary : " + str(res)) 
Producción

The original dictionary is : {(5, 6): 3, (2, 3): 9, (8, 4): 10, (6, 4): 12}
The sorted dictionary : {(2, 3): 9, (6, 4): 12, (5, 6): 3, (8, 4): 10}

Método #2: Usar dict() + sorted() + lambda

La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, se utiliza un método similar al método anterior. La única diferencia es que la disposición de los elementos se realiza mediante dict() en lugar de la comprensión del diccionario después de calcular el orden de las claves.

Python3

# Python3 code to demonstrate working of 
# Sort dictionary by Tuple Key Product
# Using dict() + sorted() + lambda
  
# initializing dictionary
test_dict = {(5, 6) : 3, (2, 3) : 9, (8, 4): 10, (6, 4): 12}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# sorted() over lambda computed product 
# dict() used instead of dictionary comprehension for rearrangement
res = dict(sorted(test_dict.items(), key = lambda ele: ele[0][1] * ele[0][0]))
  
# printing result 
print("The sorted dictionary : " + str(res)) 
Producción

The original dictionary is : {(5, 6): 3, (2, 3): 9, (8, 4): 10, (6, 4): 12}
The sorted dictionary : {(2, 3): 9, (6, 4): 12, (5, 6): 3, (8, 4): 10}

Publicación traducida automáticamente

Artículo escrito por manjeet_04 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 *