Python编程对列表中字典元素进行排序的方法详解
发布时间 - 2026-01-11 01:22:48 点击率:次本文实例讲述了Python编程对列表中字典元素进行排序的方法。分享给大家供大家参考,具体如下:

内容目录:
1. 问题起源
2. 对列表中的字典元素排序
3. 对json进行比较(忽略列表中字典的顺序)
一、问题起源
json对象a,b
a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}'
b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}'
特点:a,b对应的Python的对象中键对应的键值——列表中包含着相同的字典元素,但是唯一不同的是顺序不同。如果忽略顺序,如何判断两个json是否相等。因为字典本身是自己按键排序的,列表是按加入的顺序排序的,如果对列表中的字典元素进行排序就可以轻松地排序了。如果列表中是普通的元素(不是字典),通过list(set())组合可以读列表进行排序,而列表中如果是字典元素不能使用list(set())组合,看提示:
>>> a = [{'a':1, 'b':2}, {'c':3}]
>>> a
[{'a': 1, 'b': 2}, {'c': 3}]
>>> b = set(a)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
b = set(a)
TypeError: unhashable type: 'dict'
提示为字典是不可进行哈希操作的类型(普通非字典的元素进行哈希操作即可轻松排好序)。
那么问题的本质即:如何对列表中的字典元素排序。
二、对列表中的字典元素排序
还好,列表有sorted函数,试一下
>>> p = [{'b': 2}, {'a': 1, 'c': 3}]
>>> q = [{'a': 1, 'c': 3}, {'b': 2}]
>>> p
[{'b': 2}, {'a': 1, 'c': 3}]
>>> q
[{'a': 1, 'c': 3}, {'b': 2}]
>>> pp = sorted(p)
>>> qq = sorted(q)
>>> pp
[{'b': 2}, {'a': 1, 'c': 3}]
>>> qq
[{'b': 2}, {'a': 1, 'c': 3}]
>>> pp == qq
True
>>> p == q
False
可以看出,ok的,并且可以看出排序的原则是元素个数。
三、对json进行比较(忽略列表中字典的顺序)
import json
def compare_json(a, b):
aa = json.loads(a)
bb = json.loads(b)
len_a = len(aa)
len_b = len(bb)
if len_a != len_b:
return False
else:
for key in aa:
if not bb.has_key(key):
return False
else:
if sorted(aa[key]) != sorted(bb[key]):
return False
return True
if __name__ == "__main__":
a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}'
b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}'
print compare_json(a, b)
细节:自己写json格式时,a = "{'road':1}" json.loads(a) 错误,得写成a = '{"road:1}' 【单引号在外】
PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:
在线JSON代码检验、检验、美化、格式化工具:
http://tools./code/json
JSON在线格式化工具:
http://tools./code/jsonformat
在线XML/JSON互相转换工具:
http://tools./code/xmljson
json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools./code/jsoncodeformat
在线json压缩/转义工具:
http://tools./code/json_yasuo_trans
更多Python相关内容感兴趣的读者可查看本站专题:《Python操作json技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
# Python
# 列表
# 字典
# 排序
# Python中字典(dict)和列表(list)的排序方法实例
# Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
# Python利用公共键如何对字典列表进行排序详解
# Python常见排序操作示例【字典、列表、指定元素等】
# python列表字典排序的实现示例
# 列表中
# 操作技巧
# 可以看出
# 转换工具
# 的是
# 进阶
# 相关内容
# 则是
# 感兴趣
# 数据结构
# 给大家
# 所述
# 含着
# 几款
# 程序设计
# 使用技巧
# 键值
# 就可以
# 再为
# 象中
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel storage目录权限问题_Laravel文件写入权限设置
如何解决hover在ie6中的兼容性问题
如何快速选择适合个人网站的云服务器配置?
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
如何在Windows环境下新建FTP站点并设置权限?
Laravel如何使用.env文件管理环境变量?(最佳实践)
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何在腾讯云免费申请建站?
如何用搬瓦工VPS快速搭建个人网站?
活动邀请函制作网站有哪些,活动邀请函文案?
Laravel如何升级到最新版本?(升级指南和步骤)
Laravel如何处理文件下载请求?(Response示例)
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
Laravel如何使用Livewire构建动态组件?(入门代码)
LinuxShell函数封装方法_脚本复用设计思路【教程】
linux写shell需要注意的问题(必看)
Laravel如何实现事件和监听器?(Event & Listener实战)
如何制作一个表白网站视频,关于勇敢表白的小标题?
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
高端企业智能建站程序:SEO优化与响应式模板定制开发
Internet Explorer官网直接进入 IE浏览器在线体验版网址
Python制作简易注册登录系统
公司网站制作价格怎么算,公司办个官网需要多少钱?
网站制作壁纸教程视频,电脑壁纸网站?
如何在 React 中条件性地遍历数组并渲染元素
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
javascript日期怎么处理_如何格式化输出
北京企业网站设计制作公司,北京铁路集团官方网站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何快速搭建高效香港服务器网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
LinuxCD持续部署教程_自动发布与回滚机制
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
青岛网站建设如何选择本地服务器?
Laravel如何处理CORS跨域请求?(配置示例)
韩国服务器如何优化跨境访问实现高效连接?
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
如何快速辨别茅台真假?关键步骤解析
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
如何在Tomcat中配置并部署网站项目?
网站优化排名时,需要考虑哪些问题呢?
,南京靠谱的征婚网站?
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
javascript中的try catch异常捕获机制用法分析
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何在云主机上快速搭建网站?

