我有一个json,它是字典列表,看起来像这样:
我正在从mysql中使用pymysql
[{
"id": "123",
"name": "test",
"group": "test_group"
},
{
"id": "123",
"name": "test",
"group": "test2_group"
},
{
"id": "456",
"name": "test2",
"group": "test_group2"
},
{
"id": "456",
"name": "test2",
"group": "test_group3"
}]
我需要对其进行分组,以便每个“名称”只有一个字典,并且将包含该名称下的所有组的列表。 像这样的东西:
[{
"id": "123",
"name": "test",
"group": ["test2_group", "test_group"]
},
{
"id": "456",
"name": "test2",
"group": ["test_group2", "test_group3"]
}]
我想获得一些帮助, 谢谢 !
答案 0 :(得分:1)
您可以使用itertools.groupby对数据进行分组。 尽管我不保证下面的解决方案是最短的方法,但是它应该可以完成工作。
# Your input data
data = []
from itertools import groupby
res = []
key_func = lambda k: k['id']
for k, g in groupby(sorted(data, key=key_func), key=key_func):
obj = { 'id': k, 'name': '', 'group': []}
for group in g:
if not obj['name']:
obj['name'] = group['name']
obj['group'].append(group['group'])
res.append(obj)
print(res)
它应该以所需的格式打印数据。