Сложение всех папок цикла 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}