以下是一个示例代码,演示如何按组进行分组以避免按顺序排序:
from itertools import groupby
def group_by_category(data):
# 按照 category 进行排序
data.sort(key=lambda x: x['category'])
grouped_data = []
for key, group in groupby(data, key=lambda x: x['category']):
# 将每个分组转换为列表,并添加到结果列表中
grouped_data.append(list(group))
return grouped_data
# 示例数据
data = [
{'name': 'Apple', 'category': 'Fruit'},
{'name': 'Banana', 'category': 'Fruit'},
{'name': 'Carrot', 'category': 'Vegetable'},
{'name': 'Orange', 'category': 'Fruit'},
{'name': 'Broccoli', 'category': 'Vegetable'},
{'name': 'Grapes', 'category': 'Fruit'},
]
grouped_data = group_by_category(data)
for group in grouped_data:
print(group)
输出结果:
[{'name': 'Apple', 'category': 'Fruit'}, {'name': 'Banana', 'category': 'Fruit'}, {'name': 'Orange', 'category': 'Fruit'}, {'name': 'Grapes', 'category': 'Fruit'}]
[{'name': 'Carrot', 'category': 'Vegetable'}, {'name': 'Broccoli', 'category': 'Vegetable'}]
在这个示例中,我们首先使用sort
函数按照category
字段对输入数据进行排序。然后,我们使用groupby
函数将排序后的数据按照category
字段进行分组。最后,我们将每个分组转换为列表,并将它们添加到结果列表中。