list中根据字段分组并且取某个字段最大的数据
时间: 2023-08-05 13:09:45 浏览: 154
按某一字段分组取最大(小)值所在行的数据
可以使用Python中的lambda表达式和groupby函数来实现,示例代码如下:
```python
from itertools import groupby
# 示例数据
data = [
{'name': 'Alice', 'age': 23, 'score': 85},
{'name': 'Bob', 'age': 25, 'score': 91},
{'name': 'Charlie', 'age': 23, 'score': 79},
{'name': 'David', 'age': 25, 'score': 87},
{'name': 'Emma', 'age': 23, 'score': 94},
{'name': 'Frank', 'age': 25, 'score': 83},
]
# 根据age字段分组
groups = groupby(sorted(data, key=lambda x: x['age']), key=lambda x: x['age'])
# 取每组score字段最大值
result = [{'age': k, 'max_score': max(g, key=lambda x: x['score'])['score']} for k, g in groups]
print(result)
```
输出结果为:
```
[{'age': 23, 'max_score': 94}, {'age': 25, 'max_score': 91}]
```
其中,result是一个列表,每个元素是一个字典,包含age和max_score两个字段。max_score字段表示该组中score字段的最大值。
阅读全文