当前位置: 首页 > news >正文

还在手动排JSON数组?Python一行sorted让你爽到飞起

能被运用的内置函数(), 借助指定排序键, 针对JSON里的特定对象开展排序。

当处理JSON数据之际, 我们常常要针对其中的对象予以排序, JSON是一种轻量级的数据交换格式, 它易于人去阅读以及编写, 并且还易于机器进行解析与生成, 我们会探讨怎样从JSON里排序特定对象, 还会提供一些实用的技巧以及示例。

一、理解JSON结构

我们要知晓JSON的基本架构, JSON主要涵盖两种架构构成: 对象以及数组, 对象乃是被花括号所环绕的键值对组合, 而数组却是由方括号所包围的的值的有顺序列表, 在JSON里, 我们能够运用这些架构来呈现错综复杂的数据。

以下是一个包含多个学生信息的JSON对象:

{ "students": [ {"name": "Alice", "age": 23, "grade": "B"}, {"name": "Bob", "age": 21, "grade": "A"}, {"name": "Charlie", "age": 22, "grade": "C"} ] }

在这个存有实例的情况里, 我们具备一个有着特殊名称的数组, 此数组当中容纳着了涵盖三位学生信息的内容, 每一个学生的相关讯息皆为一个对象, 这些对象所保有包含的是学生的姓名, 以及处于不同阶段的年龄, 最后还有体现学习成果的成绩。

二、排序JSON对象

要针对JSON里的对象予以排序, 我们能够运用编程语言所提供的排序函数;以其为示例之时, 我们能够借助内置的()函数, 或者来列表对象的sort()方法, 从而就针对JSON里的对象开展排序操作哟。

1. 使用()函数

()函数能够返回一个全新的列表, 该列表里的元素是依照指定的排序规则予以排列的。我们能够把JSON中的数组当作参数传送给 ()函数, 并且指定一个排序的key函数去实现自定义的排序逻辑。

如果我们想按照学生的年龄对学生进行排序,我们可以这样做:

import json 假设json_data是我们上面定义的JSON字符串 json_data = '{"students": [{"name": "Alice", "age": 23, "grade": "B"}, {"name": "Bob", "age": 21, "grade": "A"}, {"name": "Charlie", "age": 22, "grade": "C"}]}' 将JSON字符串转换为Python字典 data = json.loads(json_data) 使用sorted()函数按照年龄对学生进行排序 sorted_students = sorted(data['students'], key=lambda x: x['age']) 打印排序后的学生信息 print(json.dumps({"students": sorted_students}, indent=4))

输出将是:

{ "students": [ { "name": "Bob", "age": 21, "grade": "A" }, { "name": "Charlie", "age": 22, "grade": "C" }, { "name": "Alice", "age": 23, "grade": "B" } ] }

于这个例子里头, 我们采用了()函数针对学生实施了升序排序, 要是有进行降序排序的需求, 我们能够在()函数当中增添=True参数。

2. 使用列表的sort()方法

在使用括号函数之外, 我们能够运用列表对象的排序方法, 来针对JSON里的对象予以排序, 和括号函数不一样的是, 排序方法将会直接改变原本的列表, 并非返回一个全新的列表。

假设我们期望依据学生的成绩, 来对学生实施降序排序这种操作, 那么我们能够采取如下这般如此的做法:

使用sort()方法按照成绩对学生进行降序排序 data['students'].sort(key=lambda x: x['grade'], reverse=True) 打印排序后的学生信息 print(json.dumps({"students": data['students']}, indent=4))

输出将是:

{ "students": [ { "name": "Bob", "age": 21, "grade": "A" }, { "name": "Alice", "age": 23, "grade": "B" }, { "name": "Charlie", "age": 22, "grade": "C" } ] }

在这个例子当中, 我们运用了sort()方法, 对学生实施了降序排序, 需要留意的是, sort()方法会对原列表作出修改, 所以在使用之际需要谨慎对待。

三、复杂排序逻辑

对学生排序时, 我们或许得依据多个字段来操作, 在此种情形下, 我们能够于排序的key函数内返回一个元组, 这个元组里含有我们期望排序所依据的多个字段的值, 是会按照元组里的第一个元素展开排序的,要是第一个元素一样的话, 那就依据第二个元素来排序, 照这样依次类推下去。

倘若我们期望先依据年纪对学生予以升序排列, 接着在年纪相同的情形下依照成绩进行降序排列, 那么我们能够如此去做:

使用sorted()函数按照年龄和成绩对学生进行排序 sorted_students = sorted(data['students'], key=lambda x: (x['age'], -ord(x['grade'][0]))) 打印排序后的学生信息 print(json.dumps({"students": sorted_students}, indent=4))

在这个例子当中, 我们运用了 -ord(x) 来给学生的成绩开展降序排列, 由于字母的 ASCII 码值呈递增态势, 所以借助取负数能够达成降序排列的成效, 要留意的是, 此种办法仅适用于成绩只为单个字母的情形, 要是成绩是多个字母或者数字的组合, 我们就得采用别的办法来进行降序排列。

http://www.jsqmd.com/news/1317829/

相关文章:

  • 三亚崖州区漏水怎么处理_2026三亚西部古城区漏水维修避坑指南与哪家好 - 雨婺虹房屋维修
  • OpenStack Neutron ML2插件多网络供应商支持机制解析
  • 2026 年现阶段林芝正规的不锈钢水箱厂家工厂哪家权威,买水箱踩坑?这几家值得信任的靠谱选择你得知道 - 实业推荐官【官方】
  • MyBatis TypeHandler原理与LocalDateTime转换实战
  • MATLAB EEG数据处理实战:EEGLAB与ICA应用指南
  • 2026年8月河北车间除尘镀锌风管/厨房排烟镀锌风管优质公司推荐_河北栩强机电设备安装有限公司 - 行业平台推荐
  • 2026 年 7 月新发布:云南口碑好的消防设施操作员培训服务团队哪家好,学完它能月入八千?原来不止考个证这么简单!-安崇职业技能培训 - 行业推荐官【认证】
  • 可用现金相差一笔冻结委托:量化软件要统一资金口径
  • AI 数据中心升级:液冷、CPO 共封装、800V 供电成新热点
  • 量子加密通信延迟测试方法与优化实践
  • 每日关注简报|2026年8月2日:Agent 上下文、Windows Insider、npm 安全与芯片市场
  • 基于Django和Hadoop的自闭症教育资源智能分配系统
  • 德阳交通标识标牌制作公司推荐:本地源头工厂如何选? - 优质品牌商家
  • 三亚海棠区卫生间漏水怎么处理_2026海南海棠湾漏水维修避坑指南与靠谱吗 - 雨婺虹房屋维修
  • 为什么你的AI副业增长停滞?揭秘流量-转化-复购漏斗中3个被99%人忽略的断点
  • Aseprite与Unity骨骼动画全流程:从像素分层到性能优化
  • SpringBoot在服装行业数字化转型中的实践与应用
  • 2026年正规奉贤区注册公司服务商怎么选?厂家推荐与全维度评测! - 优质品牌商家
  • 2026 年至今,淮南比较好的果园围栏网制造厂家竞争格局,别被老观念坑了!果园用这玩意儿,成本降一半还能防住野猪偷果? - 行业推荐【认证官】
  • MATLAB车牌识别全套代码报告基于matlab的车牌识别系统12(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 离线态刚过 1MB,主线程就被 localStorage 卡了 6.7ms:一次关于「最简单存储」的实测复盘
  • 2026 年新消息:昆山诚信的锈钢板围挡制造厂哪家好,这玩意儿刚换上,为啥小区围墙档次直接翻了3倍? - 企业推荐官【认证】
  • 行业内可靠的离婚律师口碑推荐榜单 - 品牌排行榜
  • Vue3核心指令与函数实战指南
  • Android Binder机制与Java系统服务开发实践
  • 终身学习已进入“AI响应式时代”:7天构建个性化知识进化系统(附NASA工程师实测模板)
  • 2026年8月水滴形磁棒/盐城液体管道磁棒厂家推荐合集_东台宏盛磁业有限公司 - 品牌宣传支持者
  • 从“数据喂养”到“事理萃取”:面向AI的制造业知识工程实战
  • Linux服务器高效使用阿里云盘:WebDAV与Docker部署实战
  • 2026 年现阶段,新疆知名的萌宠展览租赁厂家哪家强,花展变萌宠派对竟用这种操作?这玩意儿帮老板省了大半筹备费!-众鑫动物表演 - 品质体验官