Ausgabe
Ich habe gerade Django gelernt und erhalte Daten von api und durchlaufe die json
und hänge die Daten an die Liste an. aber wenn ich die .map()
Funktion in verwende, werden react
die Daten in der Liste (von der For-Schleife) angehängt
[
{
"results": {
"id": 544,
"name": "User_1",
}
},
{
"results": {
"id": 218,
"name": "User_2",
}
},
{
"results": {
"id": 8948,
"name": "User_3",
}
},
{
"results": {
"id": 9,
"name": "User_4",
}
},
]
Es hängt nicht an wie (wie ich will)
[
results : [
{
"id": 544,
"name": "User_1"
},
{
"id": 218,
"name": "User_2"
},
{
"id": 8948,
"name": "User_3"
},
{
"id": 9,
"name": "User_4"
}
],
"length_of_results": 25,
]
Ansichten.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})
results_list.append({"length_of_results": len(results_list)})
return Response({"data": results_list})
Ich weiß, dass in der for-Schleife jedes Ergebnis bei jeder Iteration angehängt wird, aber ich möchte auch alle Antworten in der Ergebnisliste zuweisen . Weil ich nach der for-Schleife ein weiteres Feld anfügen werde.
Ich habe es viele Male versucht, aber es funktioniert immer noch nicht.
Lösung
Sie können es lösen, indem Sie map
über die Liste iterieren:
dict(results=list(map(lambda x: x["results"], response)))
Voll funktionsfähiges Beispiel:
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}
Beantwortet von – Azhar Khan
Antwort geprüft von – Mildred Charles (FixError Admin)