以下是一个示例的解决方法,用于按字段值对数组进行分组,并将分组的值推入一个数组中:
def group_by_field(arr, field):
groups = {}
for item in arr:
value = item[field]
if value in groups:
groups[value].append(item)
else:
groups[value] = [item]
return list(groups.values())
# 示例用法
data = [
{'name': 'John', 'age': 21},
{'name': 'Jane', 'age': 22},
{'name': 'Bob', 'age': 21},
{'name': 'Alice', 'age': 22},
{'name': 'Tom', 'age': 23}
]
grouped_data = group_by_field(data, 'age')
print(grouped_data)
输出结果为:
[
[
{'name': 'John', 'age': 21},
{'name': 'Bob', 'age': 21}
],
[
{'name': 'Jane', 'age': 22},
{'name': 'Alice', 'age': 22}
],
[
{'name': 'Tom', 'age': 23}
]
]
在示例中,我们定义了一个 group_by_field
函数,它接受一个数组和一个字段名作为参数。然后,我们创建一个空字典 groups
用于存储分组结果。接下来,我们遍历数组中的每个元素,获取指定字段的值。如果该值已经在 groups
字典中存在,我们将当前元素追加到对应的分组中;否则,我们创建一个新的分组,并将当前元素作为第一个元素添加进去。最后,我们将 groups
字典的值转换为列表并返回结果。
在示例中,我们使用 data
数组作为输入,并按 age
字段值进行分组。输出结果是一个包含分组的数组,其中每个分组都包含具有相同 age
字段值的元素。