📌  相关文章
📜  Python|按值对 JSON 进行排序

📅  最后修改于: 2022-05-13 01:54:35.371000             🧑  作者: Mango

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