Programa Python para encontrar la suma del valor en el diccionario donde la clave representa la frecuencia

Dado un diccionario con una lista de valores, donde la clave representa la frecuencia, calcule la ocurrencia total de cada valor en las listas de valores.

Entrada : test_dict = {70: [7, 4, 6], 50: [6, 8, 5, 2]} 
Salida : {7: 70, 4: 70, 6: 120, 8: 50, 5: 50, 2: 50} 
Explicación : 6 aparece en ambas claves, por lo tanto, 70 + 50 = 120, asignado a 6.

Entrada : test_dict = {70: [7, 4], 50: [6, 8, 5, 2]} 
Salida : {7: 70, 4: 70, 6: 50, 8: 50, 5: 50, 2: 50} 
Explicación : 6 ahora aparece solo en la clave 50, por lo tanto, solo se asigna 50. 

Método: reduce() + Counter() + lambda + __add__

Esta es la forma en que se puede realizar esta tarea. En esto, Counter() se usa para calcular la frecuencia de cada valor, la suma con claves se realiza usando __add__, todos los valores de cada clave se suman usando reduce(). El map() se usa para extender la lógica de Counter a cada valor en la lista de valores.

Python3

# Python3 code to demonstrate working of 
# Frequency Key Values Summation
# Using reduce() + Counter() + lambda + __add__
from functools import reduce
from collections import Counter
  
# initializing dictionary
test_dict = {70 : [7, 4, 6], 
             100 : [8, 9, 5], 
             200 : [2, 5, 3, 7], 
             50 : [6, 8, 5, 2]}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# Counter() used to get values mapped with keys 
# __add__ used to add key with values.
res = reduce(Counter.__add__, map(lambda sub: Counter({ele : sub[0] for ele in sub[1]}), 
                    test_dict.items()) )
# printing result 
print("Extracted Summation dictionary : " + str(dict(res))) 

Producción:

El diccionario original es: {70: [7, 4, 6], 100: [8, 9, 5], 200: [2, 5, 3, 7], 50: [6, 8, 5, 2]}
Diccionario de suma extraído: {7: 270, 4: 70, 6: 120, 8: 150, 9: 100, 5: 350, 2: 250, 3: 200}

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 *