@BladeHeroku

Как сгруппировать данные списка?

На вход получаем такие данные:

{
    "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"
        }
    }
}
  • Вопрос задан
  • 139 просмотров
Решения вопроса 2
0xD34F
@0xD34F
grouped = {}

for n in products:
  category = n['category']['name']
  group = grouped.setdefault(category, {})
  group[n['productId']] = { 'name': n['name'] }
Ответ написан
@denislysenko
data engineer
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'}}}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы