Python|按值对 JSON 进行排序
让我们看看使用Python对 JSON 数据进行排序的不同方法。
什么是 JSON?
JSON(JavaScript Object Notation)是一种轻量级的、基于文本的、独立于语言的数据交换格式,易于人类和机器读写。 JSON 可以表示两种结构化类型:对象和数组。对象是零个或多个名称/值对的无序集合。数组是零个或多个值的有序序列。值可以是字符串、数字、布尔值、null 以及这两种结构化类型。
任务是首先按代码对 JSON 进行排序,然后按年级排序,然后按注册号排序。
代码 #1:按 Desc 顺序排序
# Python code to demonstrate sorting in JSON.
import json
data='''{
"Student":[
{
"enrollment_no":"9915103000",
"name":"JIIT",
"subject":[
{
"code":"DBMS",
"grade":"C"
}
]
},
{
"enrollment_no":"8815103057",
"name":"JSS",
"subject":[
{
"code":"COA",
"grade":"A"
},
{
"code":"CN",
"grade":"A+"
}
]
}
]
}'''
# Parsing Json object
json_parse = json.loads(data)
# iterating
for it in json_parse['Student']:
for y in it['subject']:
print(y['code'],y['grade'],it['enrollment_no'],it['name'])
输出 :
DBMS C 9915103000 JIIT
COA A 8815103057 JSS
CN A+ 8815103057 JSS
代码#2:通过使用外部库,例如 Pandas(按升序排序)。
from pandas.io.json import json_normalize
df = json_normalize(json_parse['Student'],
'subject',
['enrollment_no', 'name'])
df.sort_values(['code', 'grade', 'enrollment_no']).reset_index(drop=True)
输出:
code grade enrollment_no name
0 CN A+ 8815103057 JSS
1 COA A 8815103057 JSS
2 DBMS C 9915103000 JIIT