以下是一个示例代码,展示如何按照集合交集进行分组和聚合:
from collections import defaultdict
# 定义一个示例的数据集合
data = [
{'id': 1, 'group': 'A'},
{'id': 2, 'group': 'B'},
{'id': 3, 'group': 'A'},
{'id': 4, 'group': 'C'},
{'id': 5, 'group': 'B'},
{'id': 6, 'group': 'A'}
]
# 使用 defaultdict 创建一个字典,用于存储每个组的 ID 集合
group_dict = defaultdict(set)
# 遍历数据集,将每个 ID 添加到对应组的集合中
for item in data:
group_dict[item['group']].add(item['id'])
# 打印每个组的 ID 集合
for group, ids in group_dict.items():
print(f"Group {group}: {ids}")
# 对每个组的 ID 集合进行交集操作
intersection = set.intersection(*group_dict.values())
# 打印交集结果
print(f"Intersection: {intersection}")
运行此代码,输出结果如下:
Group A: {1, 3, 6}
Group B: {2, 5}
Group C: {4}
Intersection: set()
在这个示例中,我们首先创建了一个 defaultdict(set),用于存储每个组的 ID 集合。然后遍历数据集,将每个 ID 添加到对应组的集合中。
接下来,我们打印了每个组的 ID 集合。最后,我们使用 set.intersection() 对每个组的 ID 集合进行交集操作,并打印了交集结果。在这个示例中,由于没有共同的 ID,交集结果为空集。
上一篇:按照几个字段对SQL进行分组