以下是一个示例代码,演示了如何按每个组的子组进行分组并汇总:
from itertools import groupby
data = [
{'group': 'A', 'subgroup': '1', 'value': 10},
{'group': 'A', 'subgroup': '2', 'value': 20},
{'group': 'B', 'subgroup': '1', 'value': 30},
{'group': 'B', 'subgroup': '2', 'value': 40},
{'group': 'C', 'subgroup': '1', 'value': 50},
{'group': 'C', 'subgroup': '2', 'value': 60},
]
# 按组和子组进行排序
data.sort(key=lambda x: (x['group'], x['subgroup']))
# 按组进行分组并汇总
result = {}
for group, group_data in groupby(data, key=lambda x: x['group']):
result[group] = {}
for subgroup, subgroup_data in groupby(group_data, key=lambda x: x['subgroup']):
result[group][subgroup] = sum(item['value'] for item in subgroup_data)
print(result)
输出结果为:
{
'A': {'1': 10, '2': 20},
'B': {'1': 30, '2': 40},
'C': {'1': 50, '2': 60}
}
以上代码首先对数据进行排序,以确保分组和汇总的顺序是正确的。然后使用groupby
函数按组进行分组,并使用嵌套的groupby
函数按子组进行进一步分组。最后,使用生成器表达式计算每个子组的总和,并将结果存储在一个字典中。
上一篇:按每个组的小计值进行排序
下一篇:按每个组的最后一个元素分割向量