list按照年月分组,在年月分组的基础上,再用lambda表达式按照省份字段分组返回,lambda如何写
时间: 2023-05-26 14:02:02 浏览: 103
假设我们有一个包含年份、月份和省份字段的列表,可以按照年月和省份进行分组,代码如下:
```python
from itertools import groupby
# 假设我们有一个列表,包含以下数据
lst = [
{'year': 2021, 'month': 1, 'province': '北京'},
{'year': 2021, 'month': 1, 'province': '上海'},
{'year': 2021, 'month': 2, 'province': '北京'},
{'year': 2021, 'month': 2, 'province': '上海'},
{'year': 2022, 'month': 1, 'province': '北京'},
{'year': 2022, 'month': 1, 'province': '上海'},
{'year': 2022, 'month': 2, 'province': '北京'},
{'year': 2022, 'month': 2, 'province': '上海'},
]
# 按照年月进行分组
grouped_by_ym = groupby(lst, key=lambda x: (x['year'], x['month']))
for (year, month), group in grouped_by_ym:
print(f"{year}-{month}:")
# 在年月的基础上再按照省份分组
grouped_by_province = groupby(group, key=lambda x: x['province'])
for province, items in grouped_by_province:
print(f" {province}: {len(list(items))}")
```
输出结果如下:
```
2021-1:
北京: 1
上海: 1
2021-2:
北京: 1
上海: 1
2022-1:
北京: 1
上海: 1
2022-2:
北京: 1
上海: 1
```
其中,第一个 `groupby` 函数按照 `(x['year'], x['month'])` 的元组为 key 进行分组。第二个 `groupby` 函数在每个年月分组的基础上,再按照 `x['province']` 进行分组。lambda 表达式的语法比较简单,可以参考上面的例子。
阅读全文