可以使用Python中的内置函数groupby
以及列表推导式来实现。
假设现有以下示例列表:
data = [
{'name': 'Alice', 'group': 2},
{'name': 'Bob', 'group': 1},
{'name': 'Charlie', 'group': 2},
{'name': 'David', 'group': 1},
{'name': 'Eric', 'group': 2},
]
要将上述列表按group
进行分组,并且每个组内的所有元素都存储在一个子列表中,则可以使用以下代码:
from itertools import groupby
groups = groupby(sorted(data, key=lambda x: x['group']), key=lambda x: x['group'])
result = [[item for item in data] for key, data in groups]
上述代码将列表按group
排序,然后使用groupby
函数将其分组。最后,使用列表推导式将每个组内的元素存储在一个子列表中,并将这些子列表作为一个大列表返回。
最终结果如下所示:
[[{'name': 'Bob', 'group': 1}, {'name': 'David', 'group': 1}],
[{'name': 'Alice', 'group': 2},
{'name': 'Charlie', 'group': 2},
{'name': 'Eric', 'group': 2}]]