我剛剛學習了 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"
}
],
"length_of_results": 25,
]
視圖.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})
我知道,在 for 回圈中,它會在每次迭代中附加每個結果,但我也想在結果串列中分配所有回應。因為我將在 for 回圈之后添加一個附加欄位。
我已經嘗試了很多次,但它仍然無法正常作業。
uj5u.com熱心網友回復:
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}
uj5u.com熱心網友回復:
通過做
results_list.append({"results": result})
您正在創建一個新字典,其值為 result,我認為它本身就是字典。所以你應該能夠做到這一點:
if get_response.status_code == 200:
for result in get_response.json():
results_list.append(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/514840.html
