{
"products": [
{
"productId": "30058841",
"name": "Смартфон 1",
"category": {
"name": "Smartphone"
}
},
{
"productId": "30058842",
"name": "Айфон 1",
"category": {
"name": "Iphone"
}
},
{
"productId": "30058843",
"name": "Смартфон 2",
"category": {
"name": "Smartphone"
}
}
]
}
{
"Smartphone": {
"30058841": {
'name': 'Смартфон 1'
},
"30058843": {
'name': 'Смартфон 2'
}
},
"Iphone": {
"30058842": {
"name": "Айфон 1"
}
}
}
grouped = {}
for n in products:
category = n['category']['name']
group = grouped.setdefault(category, {})
group[n['productId']] = { 'name': n['name'] }
input = {
"products": [
{
"productId": "30058841",
"name": "Смартфон 1",
"category": {
"name": "Smartphone"
}
},
{
"productId": "30058842",
"name": "Айфон 1",
"category": {
"name": "Iphone"
}
},
{
"productId": "30058843",
"name": "Смартфон 2",
"category": {
"name": "Smartphone"
}
}
]
}
res = {}
for i in input['products']:
if i['category']['name'] not in res:
res[i['category']['name']] = {i['productId']:{'name' : i['name']}}
else:
res[i['category']['name']][i['productId']] = {'name' : i['name']}
print(res) #--> {'Smartphone': {'30058841': {'name': 'Смартфон 1'}, '30058843': {'name': 'Смартфон 2'}}, 'Iphone': {'30058842': {'name': 'Айфон 1'}}}