我想从json文件中排序数据。
我有以下data.json
json文件内容:每个包是一个具有两个属性的对象。
{
"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)
我如何更新我的代码,使数据看起来像上面显示的输出?
如果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"
}
}