Python: suma agrupada de claves múltiples

A veces, mientras trabajamos con registros de Python, podemos tener un problema en el que necesitamos realizar la agrupación de elementos en función de la igualdad de múltiples claves, y también la suma del resultado agrupado de una clave en particular. Este tipo de problema puede ocurrir en aplicaciones en dominios de datos. Vamos a discutir cierta forma en que se puede realizar esta tarea.

Entrada
test_list = [(12, ‘M’, ‘Gfg’), (23, ‘H’, ‘Gfg’), (13, ‘M’, ‘Best’)] grp_indx = [1, 2] [ 
Índices al grupo] 
sum_idx = [0] [Índice a la suma] 
Salida : [(‘M’, ‘Gfg’, 12), (‘H’, ‘Gfg’, 23), (‘M’, ‘Best’, 13 )]

Entrada
test_list = [(12, ‘M’, ‘Gfg’), (23, ‘M’, ‘Gfg’), (13, ‘M’, ‘Best’)] grp_indx = [1, 2] [ 
Índices al grupo] 
sum_idx = [0] [Índice a la suma] 
Salida : [(‘M’, ‘Gfg’, 35), (‘M’, ‘Best’, 13)] 
 

Método: Uso de loop + defaultdict() + comprensión de lista 
La combinación de las funcionalidades anteriores se puede usar para resolver este problema. En esto, realizamos la agrupación mediante bucle y la tarea de realizar la suma de la clave se realiza mediante la comprensión de listas.

Python3

# Python3 code to demonstrate working of
# Multiple Keys Grouped Summation
# Using loop + defaultdict() + list comprehension
from collections import defaultdict
 
# initializing list
test_list = [(12, 'M', 'Gfg'), (23, 'H', 'Gfg'),
            (13, 'M', 'Best'), (18, 'M', 'Gfg'),
            (2, 'H', 'Gfg'), (23, 'M', 'Best')]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing grouping indices
grp_indx = [1, 2]
 
# initializing sum index
sum_idx = [0]
 
# Multiple Keys Grouped Summation
# Using loop + defaultdict() + list comprehension
temp = defaultdict(int)
for sub in test_list:
    temp[(sub[grp_indx[0]], sub[grp_indx[1]])] += sub[sum_idx[0]]
res = [key + (val, ) for key, val in temp.items()]
                 
# printing result
print("The grouped summation : " + str(res))
Salida: 
la lista original es: [(12, ‘M’, ‘Gfg’), (23, ‘H’, ‘Gfg’), (13, ‘M’, ‘Best’), (18, ‘M’ , ‘Gfg’), (2, ‘H’, ‘Gfg’), (23, ‘M’, ‘Best’)] La sumatoria agrupada: [( 
‘M’, ‘Gfg’, 30), (‘H ‘, ‘Gfg’, 25), (‘M’, ‘Best’, 36)] 
 

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 *