我想從 json 檔案中排序資料。
我有以下data.jsonjson 檔案內容:每個包都是一個具有兩個屬性的物件。
{
"attr_2.4.48": {
"exposed": false,
"score": "Not qualified"
},
"cockpit_218": {
"exposed": false,
"score": "partial qualified"
},
"base-passwd_3.5.29": {
"exposed": false,
"score": "Qualified"
},
"audit_2.8.5": {
"exposed": true,
"score": "partial qualified"
},
"base-files_3.0.14": {
"exposed": false,
"score": "Not qualified"
}
}
輸出應按以下方式排序:
首先所有的包
"score": "Not qualified"其次是所有包裹
"score": "partial qualified"最后所有的包裹
"score": "Qualified"
每個相同的包score也應該按字母順序排序
排序后的資料應如下所示:
{
"attr_2.4.48": {
"exposed": false,
"score": "Not qualified"
},
"base-files_3.0.14": {
"exposed": false,
"score": "Not qualified"
},
"audit_2.8.5": {
"exposed": true,
"score": "partial qualified"
},
"cockpit_218": {
"exposed": false,
"score": "partial qualified"
},
"base-passwd_3.5.29": {
"exposed": false,
"score": "Qualified"
}
}
我目前的問題是,我不知道如何根據socre值對資料進行排序。
我的代碼僅按score字母順序按值對包進行排序:
with open(data.json, 'r', encoding='utf-8') as json_file:
json_content = json.load(json_file)
package = content.keys()
sorted_content = sorted(package, key=lambda ip: content[ip]['score'], reverse=False)
如何更新我的代碼,使資料看起來像上面顯示的輸出?
uj5u.com熱心網友回復:
如果json_content是您決議的 json 檔案,您可以執行以下操作:
from collections import OrderedDict
order = ["Not qualified", "partial qualified", "Qualified"]
json_content = OrderedDict(
sorted(
json_content.items(), key=lambda i: (order.index(i[1]["score"]), i[0])
)
)
print(json.dumps(json_content, indent=4, sort_keys=False))
印刷:
{
"attr_2.4.48": {
"exposed": false,
"score": "Not qualified"
},
"base-files_3.0.14": {
"exposed": false,
"score": "Not qualified"
},
"audit_2.8.5": {
"exposed": true,
"score": "partial qualified"
},
"cockpit_218": {
"exposed": false,
"score": "partial qualified"
},
"base-passwd_3.5.29": {
"exposed": false,
"score": "Qualified"
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472076.html
標籤:Python json python-3.x 排序
上一篇:Maxifs的陣列公式
