在Python中,可以使用itertools.groupby
函数和字典来实现按多个字段进行聚合并映射到一个结果的操作。下面是一个示例代码:
from itertools import groupby
# 原始数据
data = [
{'name': 'Alice', 'age': 25, 'gender': 'Female'},
{'name': 'Bob', 'age': 30, 'gender': 'Male'},
{'name': 'Charlie', 'age': 25, 'gender': 'Male'},
{'name': 'Alice', 'age': 30, 'gender': 'Female'}
]
# 按多个字段进行聚合
data.sort(key=lambda x: (x['age'], x['gender']))
groups = groupby(data, key=lambda x: (x['age'], x['gender']))
# 映射到一个结果
result = []
for key, group in groups:
names = [item['name'] for item in group]
result.append({
'age': key[0],
'gender': key[1],
'names': names
})
print(result)
运行以上代码将输出如下结果:
[
{'age': 25, 'gender': 'Female', 'names': ['Alice']},
{'age': 25, 'gender': 'Male', 'names': ['Charlie']},
{'age': 30, 'gender': 'Female', 'names': ['Alice']},
{'age': 30, 'gender': 'Male', 'names': ['Bob']}
]
以上代码首先将原始数据按照age
和gender
字段进行排序,然后使用groupby
函数按照相同的age
和gender
进行分组。接着,通过遍历每个分组,获取每个分组中的name
字段,将结果存储在result
列表中。最后,输出result
列表的内容。
下一篇:按多个字段计数