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