Сложение всех папок цикла for в один список

Я только что изучил django и я получаю данные из api, перебираю циклы json и добавляю данные в список. но когда я использую функцию .map() в react, то данные добавляются в список (из цикла for) как

[
    {
        "results": {
            "id": 544,
            "name": "User_1",
        }
    },
    {
        "results": {
            "id": 218,
            "name": "User_2",
        }
    },
    {
        "results": {
            "id": 8948,
            "name": "User_3",
        }
    },
    {
        "results": {
            "id": 9,
            "name": "User_4",
        }
    },
]

Он не добавляет как (Как я хочу)

[
    results : [
        {
           "id": 544,
           "name": "User_1"
        },
        {
           "id": 218,
           "name": "User_2"
        },
        {
           "id": 8948,
           "name": "User_3"
        },
        {
           "id": 9,
           "name": "User_4"
        }
    ]
]

views.py

def extract_view(request):
    results_list = []

    // api url for explanation only
    get_response = "https://api.punkapi.com/v2/beers"

    if get_response.status_code == 200:
        for result in get_response.json():
            results_list.append({"results": result})

    return Response({"data": results_list})

Я знаю, что в цикле for каждый результат добавляется в него с каждой итерацией, но я также хочу назначить все ответы в списке results. Потому что я буду добавлять еще одно поле после цикла for.

Я пробовал много раз, но он все еще не работает.

Делая

results_list.append({"results": result})

вы создаете новый словарь со значением result, который, как я полагаю, сам является словарем. Поэтому вы должны быть в состоянии просто сделать следующее:

if get_response.status_code == 200:
    for result in get_response.json():
        results_list.append(result)

Вы можете решить это с помощью map функции, итерирующей над списком:

dict(results=list(map(lambda x: x["results"], response)))

Полный рабочий пример:

response = [
    {
        "results": {
            "id": 544,
            "name": "User_1",
        }
    },
    {
        "results": {
            "id": 218,
            "name": "User_2",
        }
    },
    {
        "results": {
            "id": 8948,
            "name": "User_3",
        }
    },
    {
        "results": {
            "id": 9,
            "name": "User_4",
        }
    },
]

results = dict(results=list(map(lambda x: x["results"], response)))
results["length_of_results"] = len(results["results"])

>> {'results': [{'id': 544, 'name': 'User_1'},
>>   {'id': 218, 'name': 'User_2'},
>>   {'id': 8948, 'name': 'User_3'},
>>   {'id': 9, 'name': 'User_4'}],
>>  'length_of_results': 4}
Вернуться на верх