你可以使用itertools.groupby
来按照两列对Python进行分组,并根据不同的列获取记录。下面是一个示例代码:
import itertools
# 示例数据
data = [
{'col1': 'A', 'col2': 1, 'value': 100},
{'col1': 'A', 'col2': 1, 'value': 200},
{'col1': 'A', 'col2': 2, 'value': 300},
{'col1': 'B', 'col2': 1, 'value': 400},
{'col1': 'B', 'col2': 2, 'value': 500},
]
# 按照 col1 和 col2 分组
sorted_data = sorted(data, key=lambda x: (x['col1'], x['col2']))
grouped_data = itertools.groupby(sorted_data, key=lambda x: (x['col1'], x['col2']))
# 遍历分组并获取记录
for key, group in grouped_data:
print(f"Key: {key}")
for record in group:
print(record)
输出结果为:
Key: ('A', 1)
{'col1': 'A', 'col2': 1, 'value': 100}
{'col1': 'A', 'col2': 1, 'value': 200}
Key: ('A', 2)
{'col1': 'A', 'col2': 2, 'value': 300}
Key: ('B', 1)
{'col1': 'B', 'col2': 1, 'value': 400}
Key: ('B', 2)
{'col1': 'B', 'col2': 2, 'value': 500}
这段代码首先对数据进行排序,以确保相同的键值组合在一起。然后使用itertools.groupby
函数按照键值组合进行分组。最后,遍历分组并获取每个分组中的记录。