python 怎么对多个字段 分组
时间: 2024-01-21 14:04:50 浏览: 20
可以使用 `itertools.groupby` 函数对多个字段进行分组。假设有一个包含多个字段的列表 `data`,可以按照字段 `field1` 和 `field2` 进行分组,示例代码如下:
```python
from itertools import groupby
data = [
{'field1': 'A', 'field2': 1, 'value': 10},
{'field1': 'A', 'field2': 1, 'value': 20},
{'field1': 'A', 'field2': 2, 'value': 30},
{'field1': 'B', 'field2': 1, 'value': 40},
{'field1': 'B', 'field2': 2, 'value': 50},
]
grouped_data = []
for key, group in groupby(data, key=lambda x: (x['field1'], x['field2'])):
group_list = list(group)
group_dict = {
'field1': key[0],
'field2': key[1],
'values': [x['value'] for x in group_list]
}
grouped_data.append(group_dict)
print(grouped_data)
```
输出结果如下:
```
[
{'field1': 'A', 'field2': 1, 'values': [10, 20]},
{'field1': 'A', 'field2': 2, 'values': [30]},
{'field1': 'B', 'field2': 1, 'values': [40]},
{'field1': 'B', 'field2': 2, 'values': [50]}
]
```
上述代码中,使用 `lambda` 函数将 `field1` 和 `field2` 作为分组关键字,然后将每个分组中的 `value` 值存入一个列表中。最后将每个分组的结果存入一个字典中,并将所有字典组成的列表存入 `grouped_data` 变量中。