Python: media acumulativa de las claves del diccionario

Dada la lista de diccionarios, nuestra tarea es escribir un programa en Python para extraer la media de todas las claves. 

Entrada: test_list = [{‘gfg’: 34, ‘es’: 8, ‘mejor’: 10},

             {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9, ‘and’: 5, ‘best’: 12},

             {‘geeks’: 8, ‘buscar’: 3, ‘gfg’: 3, ‘mejor’: 8}]

Salida: {‘gfg’: 12.666666666666666, ‘es’: 8, ‘mejor’: 10, ‘para’: 10, ‘geeks’: 8.5, ‘y’: 5, ‘buscar’: 3}

Explicación: el mejor tiene 3 valores, 10, 8 y 12, su media calculada en 10, por lo tanto, en el resultado.

Entrada: test_list = [{‘gfg’: 34, ‘es’: 8, ‘mejor’: 10},

             {‘gfg’: 1, ‘para’: 10, ‘y’: 5, ‘mejor’: 12},

             { ‘buscar’: 3, ‘gfg’: 3, ‘mejor’: 8}]

Salida: {‘gfg’: 12.666666666666666, ‘es’: 8, ‘mejor’: 10, ‘para’: 10, ‘y’: 5, ‘buscar’: 3}

Explicación: el mejor tiene 3 valores, 10, 8 y 12, su media calculada en 10, por lo tanto, en el resultado.

Método #1: Usar mean() + loop 

En esto, para extraer cada lista se usa un bucle y todos los valores se suman y memorizan usando un diccionario. La media se extrae más tarde dividiendo por la aparición de cada clave. 

Python3

# Python3 code to demonstrate working of
# Cumulative Keys Mean in Dictionary List
# Using loop + mean()
from statistics import mean
  
# initializing list
test_list = [{'gfg' : 34, 'is' : 8, 'best' : 10},
             {'gfg' : 1, 'for' : 10, 'geeks' : 9, 'and' : 5, 'best' : 12},
             {'geeks' : 8, 'find' : 3, 'gfg' : 3, 'best' : 8}]
               
# printing original list
print("The original list is : " + str(test_list))
  
res = dict()
for sub in test_list:
    for key, val in sub.items():
        if key in res:
              
            # combining each key to all values in
            # all dictionaries
            res[key].append(val)
        else:
            res[key] = [val]
  
for key, num_l in res.items():
    res[key] = mean(num_l)
  
# printing result
print("The Extracted average : " + str(res))

Producción:

La lista original es: [{‘gfg’: 34, ‘is’: 8, ‘best’: 10}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9, ‘and’: 5 , ‘mejor’: 12}, {‘geeks’: 8, ‘buscar’: 3, ‘gfg’: 3, ‘mejor’: 8}]

El promedio extraído: {‘gfg’: 12.666666666666666, ‘es’: 8, ‘mejor’: 10, ‘para’: 10, ‘geeks’: 8.5, ‘y’: 5, ‘buscar’: 3}

Método #2: Usando defaultdict() + mean()

En este, la tarea de memorizar se hace usando defaultdict(). Esto reduce una verificación condicional y hace que el código sea más conciso.

Python3

# Python3 code to demonstrate working of
# Cumulative Keys Mean in Dictionary List
# Using defaultdict() + mean()
from statistics import mean
from collections import defaultdict
  
# initializing list
test_list = [{'gfg' : 34, 'is' : 8, 'best' : 10},
             {'gfg' : 1, 'for' : 10, 'geeks' : 9, 'and' : 5, 'best' : 12},
             {'geeks' : 8, 'find' : 3, 'gfg' : 3, 'best' : 8}]
               
# printing original list
print("The original list is : " + str(test_list))
  
# defaultdict reduces step to memoize.
res = defaultdict(list)
for sub in test_list:
    for key, val in sub.items():
        res[key].append(val)
          
res = dict(res)
for key, num_l in res.items():
      
    # computing mean
    res[key] = mean(num_l)
  
# printing result
print("The Extracted average : " + str(res))

Producción:

La lista original es: [{‘gfg’: 34, ‘is’: 8, ‘best’: 10}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9, ‘and’: 5 , ‘mejor’: 12}, {‘geeks’: 8, ‘buscar’: 3, ‘gfg’: 3, ‘mejor’: 8}]

El promedio extraído: {‘gfg’: 12.666666666666666, ‘es’: 8, ‘mejor’: 10, ‘para’: 10, ‘geeks’: 8.5, ‘y’: 5, ‘buscar’: 3}

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 *