下面是一个示例代码,用于按status
和user
字段对数据进行分组:
from itertools import groupby
# 假设数据是一个包含字典的列表
data = [
{'status': 'pending', 'user': 'A', 'value': 100},
{'status': 'approved', 'user': 'A', 'value': 200},
{'status': 'pending', 'user': 'B', 'value': 150},
{'status': 'approved', 'user': 'B', 'value': 300},
{'status': 'pending', 'user': 'A', 'value': 50},
]
# 先按status字段进行排序,然后再按user字段进行分组
data.sort(key=lambda x: (x['status'], x['user']))
# 使用groupby函数进行分组
groups = groupby(data, key=lambda x: (x['status'], x['user']))
# 遍历分组并打印结果
for key, group in groups:
print(key)
for item in group:
print(item)
print('---')
输出结果如下:
('approved', 'A')
{'status': 'approved', 'user': 'A', 'value': 200}
---
('approved', 'B')
{'status': 'approved', 'user': 'B', 'value': 300}
---
('pending', 'A')
{'status': 'pending', 'user': 'A', 'value': 100}
{'status': 'pending', 'user': 'A', 'value': 50}
---
('pending', 'B')
{'status': 'pending', 'user': 'B', 'value': 150}
---
这段代码首先使用lambda函数作为key
参数对数据进行排序,先按status
字段排序,然后再按user
字段排序。然后使用groupby
函数进行分组,将相同status
和user
字段的数据分到一组。最后遍历分组并输出结果。
上一篇:按_source中的字段进行聚合