Python – Ordenar diccionario por suma de valores

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)) 
Producción

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)) 
Producción

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

Deja una respuesta

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