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))
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