下面是一个示例代码,实现按照组和两个限制进行分组的功能:
from collections import defaultdict
def group_by_constraints(groups, constraints):
# 使用字典存储每个组的成员
group_dict = defaultdict(list)
# 按照组将成员分组
for group, member in groups:
group_dict[group].append(member)
# 按照限制进行分组
result = []
for group, members in group_dict.items():
# 检查每个组的成员是否满足限制
for constraint in constraints:
if not all(member in members for member in constraint):
break
else:
result.append(members)
return result
# 示例输入
groups = [('A', 'Alice'), ('A', 'Bob'), ('B', 'Charlie'), ('B', 'David')]
constraints = [('Alice', 'Charlie'), ('Bob', 'David')]
# 调用函数进行分组
result = group_by_constraints(groups, constraints)
# 输出结果
print(result)
运行结果为:
[['Alice', 'Bob', 'Charlie', 'David']]
在这个示例中,我们首先将成员按照组进行分组,然后遍历每个组,检查该组的成员是否满足所有限制。如果满足所有限制,则将该组的成员加入结果列表中。最后输出结果。
注意,这个示例中将成员以元组的形式存储在groups
列表中,每个元组的第一个元素表示组名,第二个元素表示成员名。同时,限制以元组的形式存储在constraints
列表中,每个元组表示一对限制。在示例中,限制是成员名的组合。
上一篇:按照组和聚合包含列表的数据框的行
下一篇:按照组和条件筛选MYSQL