以下是一个示例代码,用于按多个键对对象数组进行分组:
from itertools import groupby
def group_by_multiple_keys(objects, keys):
grouped_objects = []
objects.sort(key=lambda x: [x[key] for key in keys])
for key, group in groupby(objects, key=lambda x: [x[key] for key in keys]):
grouped_objects.append(list(group))
return grouped_objects
# 示例数据
objects = [
{'name': 'John', 'age': 20, 'country': 'USA'},
{'name': 'Jane', 'age': 25, 'country': 'USA'},
{'name': 'Tom', 'age': 30, 'country': 'UK'},
{'name': 'Alice', 'age': 25, 'country': 'UK'},
{'name': 'Bob', 'age': 20, 'country': 'USA'},
{'name': 'Eve', 'age': 30, 'country': 'USA'}
]
# 按 'country' 和 'age' 进行分组
grouped_objects = group_by_multiple_keys(objects, ['country', 'age'])
# 打印分组结果
for group in grouped_objects:
print(group)
输出结果:
[{'name': 'Alice', 'age': 25, 'country': 'UK'}, {'name': 'Tom', 'age': 30, 'country': 'UK'}]
[{'name': 'John', 'age': 20, 'country': 'USA'}, {'name': 'Bob', 'age': 20, 'country': 'USA'}]
[{'name': 'Jane', 'age': 25, 'country': 'USA'}]
[{'name': 'Eve', 'age': 30, 'country': 'USA'}]
在示例中,group_by_multiple_keys
函数接受一个对象数组和一个键列表作为参数。它首先根据键列表对对象数组进行排序,然后使用 groupby
函数将相同键值的对象分组。最后,将分组的结果添加到一个列表中并返回。
上一篇:按多个分组将特定行求和
下一篇:按多个键对数组对象进行求和