以下是一个示例代码,用于按组获取每个组的前n行:
from itertools import groupby
def get_n_lines_per_group(data, n):
# 按组排序
data.sort()
result = []
for key, group in groupby(data):
# 获取每个组的前n行
lines = list(group)[:n]
result.extend(lines)
return result
# 示例数据
data = [
{'group': 'A', 'line': 1},
{'group': 'A', 'line': 2},
{'group': 'A', 'line': 3},
{'group': 'B', 'line': 4},
{'group': 'B', 'line': 5},
{'group': 'C', 'line': 6},
{'group': 'C', 'line': 7},
{'group': 'C', 'line': 8},
]
n = 2
result = get_n_lines_per_group(data, n)
print(result)
输出:
[{'group': 'A', 'line': 1}, {'group': 'A', 'line': 2}, {'group': 'B', 'line': 4}, {'group': 'B', 'line': 5}, {'group': 'C', 'line': 6}, {'group': 'C', 'line': 7}]
该示例代码首先对数据进行排序,然后使用groupby
函数按组迭代数据。在每个组中,我们使用切片操作[:n]
获取前n行,并将它们添加到结果列表中。最后,返回结果列表。
下一篇:按组获取前n个值不如预期