以下是一个示例代码,展示了如何按照多个对象进行分组:
from itertools import groupby
def group_by_multiple_objects(data, *keys):
# 首先按照第一个关键字对数据进行排序
sorted_data = sorted(data, key=lambda x: [getattr(x, key) for key in keys[0]])
# 使用groupby函数按照多个关键字进行分组
grouped_data = []
for key, group in groupby(sorted_data, key=lambda x: tuple(getattr(x, key) for key in keys)):
grouped_data.append(list(group))
return grouped_data
# 示例数据
class Person:
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
data = [
Person("Alice", 25, "New York"),
Person("Bob", 30, "London"),
Person("Charlie", 25, "New York"),
Person("David", 30, "London"),
Person("Eve", 25, "Paris"),
]
# 按照年龄和城市进行分组
grouped_data = group_by_multiple_objects(data, "age", "city")
# 打印分组结果
for group in grouped_data:
print("Group:")
for person in group:
print(person.name, person.age, person.city)
print()
这个示例代码使用了Python的groupby
函数和sorted
函数来按照多个关键字进行分组。首先将数据按照第一个关键字进行排序,然后使用groupby
函数按照多个关键字进行分组。最后将每个分组的数据存储到一个列表中,并返回结果。