Proporcione un diccionario con listas de valores, ordene las claves por suma de valores en la lista de valores.
Entrada : test_dict = {‘Gfg’: [6, 7, 4], ‘mejor’: [7, 6, 5]}
Salida : {‘Gfg’: 17, ‘mejor’: 18}
Explicación : Ordenado por suma, y reemplazado.Entrada : test_dict = {‘Gfg’: [8], ‘mejor’: [5]}
Salida : {‘mejor’: 5, ‘Gfg’: 8}
Explicación : Ordenado por suma y reemplazado.
Método #1: Usar sorted() + comprensión de diccionario + sum()
La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, primero sumamos todos los elementos de la lista usando sum() y luego el siguiente paso es ordenar todas las claves de acuerdo con la suma extraída usando sorted().
Python3
# Python3 code to demonstrate working of # Sort Dictionary by Values Summation # Using dictionary comprehension + sum() + sorted() # initializing dictionary test_dict = {'Gfg' : [6, 7, 4], 'is' : [4, 3, 2], 'best' : [7, 6, 5]} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # summing all the values using sum() temp1 = {val: sum(int(idx) for idx in key) for val, key in test_dict.items()} # using sorted to perform sorting as required temp2 = sorted(temp1.items(), key = lambda ele : temp1[ele[0]]) # rearrange into dictionary res = {key: val for key, val in temp2} # printing result print("The sorted dictionary : " + str(res))
The original dictionary is : {'Gfg': [6, 7, 4], 'is': [4, 3, 2], 'best': [7, 6, 5]} The sorted dictionary : {'is': 9, 'Gfg': 17, 'best': 18}
Método #2: Usando map() + comprensión de diccionario + sorted() + sum()
La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, realizamos la tarea de mapear la lógica de la suma usando map().
Python3
# Python3 code to demonstrate working of # Sort Dictionary by Values Summation # Using map() + dictionary comprehension + sorted() + sum() # initializing dictionary test_dict = {'Gfg' : [6, 7, 4], 'is' : [4, 3, 2], 'best' : [7, 6, 5]} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # summing all the values using sum() # map() is used to extend summation to sorted() temp = {key: sum(map(lambda ele: ele, test_dict[key])) for key in test_dict} res = {key: temp[key] for key in sorted(temp, key = temp.get)} # printing result print("The sorted dictionary : " + str(res))
The original dictionary is : {'Gfg': [6, 7, 4], 'is': [4, 3, 2], 'best': [7, 6, 5]} The sorted dictionary : {'is': 9, 'Gfg': 17, 'best': 18}
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