python 3 字典排序_Python学习教程实用技法:通过公共键对字典列表排序—itemgetter...
Python学习教程实用技法:通过公共键对字典列表排序—itemgetter
前言:我们有一个字典列表,想根据一个或多个字典中的值对列表进行排序。
利用operator模块中的itemgetter函数对这类结构进行排序是非常简单的。
实例:
from operator import itemgetterrows=[{'name':'mark','age':18,'uid':'110'},{'name':'miaomiao','age':28,'uid':'150'},{'name':'miaomiao','age':8,'uid':'150'},{'name':'xiaohei','age':38,'uid':'130'},]rows_by_name=sorted(rows,key=itemgetter('name'))rows_by_uid=sorted(rows,key=itemgetter('uid'))print(rows_by_name)print(rows_by_uid)#itemgetter还支持多个键rows_by_name_age=sorted(rows,key=itemgetter('name','age'))print(rows_by_name_age)#itemgetter同样适用min、maxprint(min(rows,key=itemgetter('uid')))print(max(rows,key=itemgetter('age')))
运行结果:
[{'name': 'mark', 'age': 18, 'uid': '110'}, {'name': 'miaomiao', 'age': 28, 'uid': '150'}, {'name': 'miaomiao', 'age': 8, 'uid': '150'}, {'name': 'xiaohei', 'age': 38, 'uid': '130'}][{'name': 'mark', 'age': 18, 'uid': '110'}, {'name': 'xiaohei', 'age': 38, 'uid': '130'}, {'name': 'miaomiao', 'age': 28, 'uid': '150'}, {'name': 'miaomiao', 'age': 8, 'uid': '150'}][{'name': 'mark', 'age': 18, 'uid': '110'}, {'name': 'miaomiao', 'age': 8, 'uid': '150'}, {'name': 'miaomiao', 'age': 28, 'uid': '150'}, {'name': 'xiaohei', 'age': 38, 'uid': '130'}]{'name': 'mark', 'age': 18, 'uid': '110'}{'name': 'xiaohei', 'age': 38, 'uid': '130'}
讨论
在这个例子中,rows被传递给内建的sorted()函数,该函数接受一个关键字参数key,这个参数应该代表一个可调用对象(callable),该对象从rows中接受一个单独的元素作为输入并返回一个用来做排序依据的值。itemgetter()函数创建的就是这样的一个可调用对象。
函数operator.itemgetter()接受的参数可作为查询的标记,用来从rows的记录中提取出所需要的值。它可以是字典的键名称、用数字表示的列表元素或是任何可以传给对象的__getitem__()方法的值。如果传多个标记给itemgetter(),那么它产生的可调用对象将返回一个包含所有元素在内的元组,然后sorted()将根据对元组的排序结果来排列输出结果。如果想同时针对多个字段做排序,那么这是非常有用的。
有时候会用lambda表达式取代itemgetter()的功能,例如:
rows_by_uid=sorted(rows,key=lambda r:r['uid'])rows_by_name_age=sorted(rows,key=lambda r:(r['name','age']))
这种解决方案通常也能正常工作。但是用itemgetter()通常会运行的更快一些。因此如果需要考虑性能问题的话,应该使用itemgetter().
欢迎大家提出宝贵的意见,更多的Python学习教程也会继续为大家更新!
python 3 字典排序_Python学习教程实用技法:通过公共键对字典列表排序—itemgetter...相关推荐
- Python学习教程实用技法:通过公共键对字典列表排序—itemgetter
Python学习教程实用技法:通过公共键对字典列表排序-itemgetter 前言:我们有一个字典列表,想根据一个或多个字典中的值对列表进行排序. 利用operator模块中的itemgetter函数 ...
- 我学python前一句_Python学习教程:人生苦短,我用Python?入门前你要知道这些
有多少伙伴是因为一句'人生苦短,我用Python'就要去学Python的?之前也大家更新过Python学习教程普及过多次的Python相关知识,不过大家还是还得计划一下Python学习路线!Pytho ...
- python资本市场财务数据分析_Python学习教程:用Python进行金融市场文本数据的情感计算...
今天我们的Python学习教程找点财经类新闻文本数据用Python来做点简单的情感分析. 一.tushare介绍 tushare库是目前比较流行的开源免费的经济数据库,tushare有普通版和高级版, ...
- python的dropna函数_Python学习教程:从Excel到Python最常用的32个Pandas函数(一)
原标题:Python学习教程:从Excel到Python最常用的32个Pandas函数(一) 本次的Python学习教程涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据 ...
- 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?
2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...
- python编程视频-【科研资源03】最全Python编程全套系统视频学习教程
原标题:[科研资源03]最全Python编程全套系统视频学习教程 01 资源介绍 从事Python开发这么久,也了解了不少,我发现Python主要有以下四大主要应用:网络爬虫.web开发.人工智能.自 ...
- python编程教学视频-【科研资源03】最全Python编程全套系统视频学习教程
原标题:[科研资源03]最全Python编程全套系统视频学习教程 01 资源介绍 从事Python开发这么久,也了解了不少,我发现Python主要有以下四大主要应用:网络爬虫.web开发.人工智能.自 ...
- python dict遍历_Python教程:Python数据类型之字典(附学习教程)
字典是另一种可变容器模型,且可存储任意类型对象,是除列表以外python之中最灵活的内置数据结构类型.查找速度非常快,一个元素和10W个元素没有什么区别. 堆栈的词典 字典的无序特性和创建: 列表是有 ...
- python sorted下标_Python学习教程(Python学习路线):第七天-字符串和常用数据结构
Python学习教程(Python学习路线):字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代 ...
最新文章
- 利用反射对应数据库字段
- python多进程队列性能测试
- 几种常用的加密方式简单介绍
- 汽车故障检测软件_汽车没故障,定期保养,为啥尾气检测通不过?老司机说出关键...
- Python解析XML文件
- sysdig案例分析 - 哪些文件正在被进程访问
- RPC框架Dubbo分析
- Flink UI: Flink 1.10 如何查看 数据源 的背压(反压)情况(消费kafka)
- Java SE (5)之 线程使用
- 柔性穿刺针有限元模型
- Linux常用查找命令
- stm8s单片机2位数码管显示_AT89S52单片机,实现功能两位数码管显示数字,按下
- Couldn't figure out the Java version of /root/.jenkins/jdk/bin/java bash: /root/.jenkins/jdk/bin/jav
- SVN如何建立版本库
- Pytorch实现Deep Mutual Learning网络
- 笔记本,Debian不能调整亮度
- ADSO中的表和视图
- mongodb $符号的神奇用法+mongo数据类型
- 最新notion enhancer安装教程(macOS Intel适用)
- 让机器“读懂”放射学报告
热门文章
- matlab计算每个细胞面积,手把手教你用 Imaris 计算细胞面积
- Python 序列类型支持拆包操作
- Python教程:通过函数名调用函数的3种场景实现
- 用python修改文件内容修改txt内容的3种方法
- python 计算两个日期相差多少个月
- c语言无限循环while(1)和for(;;)的区别
- vscode怎么用命令行打开本地项目(code .)
- 深度学习中的batch理解(batch size 一次喂给神经网络的数据大小量)
- Opencv 深度学习中为什么普遍使用BGR而不用RGB?
- html5 loader,7种基于GSAP的SVG Loader加载动画特效