我正在構建一個簡單的應用程式,我試圖從中獲取 json 回應api但它沒有排序方法,所以我試圖在 python 函式中獲取后對其進行排序,但問題是,它沒有對串列 dict 進行排序.
函式.py
json_data = [
{
"instanceId": "19",
"instanceData": [
{
"blogLikes": "166647",
"blogComments": "7713",
}
]
},
{
"instanceId": "3",
"instanceData": [
{
"blogLikes": "236655",
"blogComments": "8304",
}
]
},
{
"instanceId": "17",
"instanceData": [
{
"blogLikes": "246865",
"blogComments": "7213",
}
]
}
]
def sort_dict(json_data):
new_dict = sorted(json_data, key=lambda k: k[-1]['instanceData'][0]['blogLikes'])
print(new_dict)
return JsonResponse({"example": "nothing"})
當我嘗試運行上述功能但它顯示
/sort_dict/ -1 處的 KeyError
我已經通過不同的方法嘗試了很多次,例如:-
newlist = sorted(json_data, key=lambda d: d['instanceData'])
然后它向我展示了
'dict' 和 'dict' 的實體之間不支持'<'
然后我嘗試了
newlist = sorted(json_data, key=lambda d: list(d.keys()))
它沒有引發任何錯誤但它回傳意外結果而不是排序串列。
我想做什么?
我正在嘗試根據blogLikes對串列的字典進行排序
喜歡 :-
json_data = [
{
"instanceId": "17",
"instanceData": [
{
"blogLikes": "246865",
"blogComments": "7213",
}
]
},
{
"instanceId": "3",
"instanceData": [
{
"blogLikes": "236655",
"blogComments": "8304",
}
]
},
{
"instanceId": "19",
"instanceData": [
{
"blogLikes": "166647",
"blogComments": "7713",
}
]
}
]
任何幫助將非常感激。
uj5u.com熱心網友回復:
目的是k[-1]什么?此外,如果您希望它按降序排序,您需要reverse=True:
json_data = [
{
"instanceId": "19",
"instanceData": [
{
"blogLikes": "166647",
"blogComments": "7713",
}
]
},
{
"instanceId": "3",
"instanceData": [
{
"blogLikes": "236655",
"blogComments": "8304",
}
]
},
{
"instanceId": "17",
"instanceData": [
{
"blogLikes": "246865",
"blogComments": "7213",
}
]
}
]
def sort_dict(json_data):
new_dict = sorted(json_data, key=lambda k: k['instanceData'][0]['blogLikes'], reverse=True)
print(new_dict)
sort_dict(json_data)
輸出
[{'instanceId': '17', 'instanceData': [{'blogLikes': '246865', 'blogComments': '7213'}]}, {'instanceId': '3', 'instanceData': [{'blogLikes': '236655', 'blogComments': '8304'}]}, {'instanceId': '19', 'instanceData': [{'blogLikes': '166647', 'blogComments': '7713'}]}]
請注意,我將它盡可能靠近您的代碼 - 例如,我將從函式回傳而不是在其中列印。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/488994.html
