以下是一个示例代码,用于按组进行分组,并在给定值不为空时取该值:
from itertools import groupby
def group_and_filter(data):
groups = groupby(data, lambda x: x['group'])
result = []
for key, group in groups:
filtered_group = [item['value'] for item in group if item['value'] is not None]
if filtered_group:
result.append((key, filtered_group))
return result
# 测试数据
data = [
{'group': 'A', 'value': 1},
{'group': 'A', 'value': 2},
{'group': 'A', 'value': None},
{'group': 'B', 'value': 3},
{'group': 'B', 'value': None},
{'group': 'B', 'value': 4},
{'group': 'C', 'value': None},
{'group': 'C', 'value': None},
{'group': 'C', 'value': None},
]
result = group_and_filter(data)
print(result)
输出结果为:
[('A', [1, 2]), ('B', [3, 4])]
在上面的示例中,我们使用了groupby
函数来按照group
键进行分组。然后,我们遍历每个组,使用列表推导式过滤掉value
为空的项,并将结果添加到最终的结果列表中。如果过滤后的组不为空,则将该组添加到结果列表中。
请注意,上面的示例中,我们假设data
是一个包含字典的列表,每个字典包含group
和value
键。您可以根据您的实际需求进行修改和调整。
下一篇:按组进行分组,然后求和值。