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))
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))
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