以下是一个示例代码,展示了如何按多维数组进行分组和排序:
from operator import itemgetter
def group_and_sort(arr, group_by, sort_by):
# 按照指定的字段进行分组
groups = {}
for item in arr:
key = item[group_by]
if key not in groups:
groups[key] = []
groups[key].append(item)
# 对每个分组中的元素按照指定的字段进行排序
for key in groups:
groups[key].sort(key=itemgetter(sort_by))
return groups
# 示例数据
data = [
{'name': 'Alice', 'group': 'A', 'score': 80},
{'name': 'Bob', 'group': 'B', 'score': 90},
{'name': 'Charlie', 'group': 'A', 'score': 95},
{'name': 'David', 'group': 'B', 'score': 85},
{'name': 'Eve', 'group': 'A', 'score': 75},
{'name': 'Frank', 'group': 'B', 'score': 88},
]
# 按照 'group' 字段进行分组,然后按照 'score' 字段进行排序
result = group_and_sort(data, 'group', 'score')
# 输出结果
for key, value in result.items():
print(f"Group {key}:")
for item in value:
print(f" {item['name']}: {item['score']}")
print()
运行以上代码将输出如下结果:
Group A:
Eve: 75
Alice: 80
Charlie: 95
Group B:
David: 85
Frank: 88
Bob: 90
以上代码首先定义了一个 group_and_sort
函数,该函数接受一个多维数组 arr
,以及两个字符串参数 group_by
和 sort_by
,分别表示按照哪个字段进行分组和排序。函数内部首先按照 group_by
字段进行分组,使用字典来存储分组结果。然后对每个分组中的元素按照 sort_by
字段进行排序,使用 sort
方法和 itemgetter
函数来实现。最后返回分组和排序的结果。
在示例代码中,我们定义了一个示例数据 data
,包含了每个人的姓名、所属组别和分数。然后调用 group_and_sort
函数,传入数据和需要分组和排序的字段。最后遍历分组和排序的结果,输出每个组别下的姓名和分数。
下一篇:按多行数据分组