python groupby 条件去重计数
时间: 2023-06-23 10:52:42 浏览: 62
在 Python 中,可以使用 `groupby` 函数和字典来实现根据条件去重并计数的操作。
假设有一个列表 `data`,其中包含了多个字典,每个字典都有一个 `id` 和 `category` 属性,我们要对 `category` 属性进行分组,并去重计数。
示例代码如下:
```python
from itertools import groupby
data = [
{'id': 1, 'category': 'A'},
{'id': 2, 'category': 'B'},
{'id': 3, 'category': 'C'},
{'id': 4, 'category': 'A'},
{'id': 5, 'category': 'A'},
{'id': 6, 'category': 'B'},
{'id': 7, 'category': 'C'},
]
groups = groupby(sorted(data, key=lambda x: x['category']), key=lambda x: x['category'])
result = {k: len(set(d['id'] for d in g)) for k, g in groups}
print(result)
```
输出结果为:
```python
{'A': 3, 'B': 2, 'C': 2}
```
解释:首先将 `data` 列表按 `category` 属性进行排序,并使用 `groupby` 函数按 `category` 属性进行分组。然后遍历每个分组,使用集合去重并计数。最后将计数结果放入字典中返回。