python内置函数sorted()用法深入分析


Posted in Python onOctober 08, 2019

本文实例讲述了python内置函数sorted()用法。分享给大家供大家参考,具体如下:

列表对象提供了sort()方法支持原地排序,而内置函数sorted()不支持原地操作只是返回新的列表,并不对原列表进行任何修改。sorted()方法可以对列表、元组、字典、range对象等进行排序。列表的sort()方法和内置函数sorted()都支持key参数实现复杂排序要求。

#使用key来指定排序依据,先按姓名升序排序,姓名相同的按年龄降序排序
>>> persons = [{'name':'xuzm', 'age':10}, {'name':'xuzm2', 'age':20}, {'name':'xuzm4', 'age':40}, {'name':'xuzm3', 'age':30}]
>>> persons
[{'name': 'xuzm', 'age': 10}, {'name': 'xuzm2', 'age': 20}, {'name': 'xuzm4', 'age': 40}, {'name': 'xuzm3', 'age': 30}]
>>> print(sorted(persons, key=lambda x:(x['name'], -x['age'])))
[{'name': 'xuzm', 'age': 10}, {'name': 'xuzm2', 'age': 20}, {'name': 'xuzm3', 'age': 30}, {'name': 'xuzm4', 'age': 40}]
>>> phonebook = {'xuzm':'123', 'xuzm2':'456', 'xuzm3':'789'}
>>> from operator import itemgetter
>>> sorted(phonebook.items(), key=itemgetter(1))  #按字典元素的值默认进行升序排列
[('xuzm', '123'), ('xuzm2', '456'), ('xuzm3', '789')]
>>> sorted(phonebook.items(), key=itemgetter(0),reverse=True)   #按字典中元素的键进行降序排序
[('xuzm3', '789'), ('xuzm2', '456'), ('xuzm', '123')]
>>> gameresult = [['Bob', 95.0, 'A'], ['Alan', 86.0, 'C'], ['Mandy', 83.5, 'A'], ['Rob', 89.3, 'E']]
>>> sorted(gameresult, key=itemgetter(0, 1))  #按姓名升序排列,姓名相同的按分数进行升序排列
[['Alan', 86.0, 'C'], ['Bob', 95.0, 'A'], ['Mandy', 83.5, 'A'], ['Rob', 89.3, 'E']]
>>> sorted(gameresult, key=itemgetter(1, 0))  #按分数进行升序排列,分数相同的按姓名进行升序排列
[['Mandy', 83.5, 'A'], ['Alan', 86.0, 'C'], ['Rob', 89.3, 'E'], ['Bob', 95.0, 'A']]
>>> sorted(gameresult, key=itemgetter(2, 0))  #按等级升序排列,等级相同的按姓名进行升序排列
[['Bob', 95.0, 'A'], ['Mandy', 83.5, 'A'], ['Alan', 86.0, 'C'], ['Rob', 89.3, 'E']]
>>> gameresult = [{'name':'Bob', 'wins':10, 'losses':3, 'rating':75.0},
               {'name':'David', 'wins':3, 'losses':5, 'rating':57.0},
               {'name':'Carol', 'wins':4, 'losses':5, 'rating':57.0},
               {'name':'Patty', 'wins':9, 'losses':3, 'rating':72.8}]
>>> sorted(gameresult, key=itemgetter('wins', 'name'))  #按wins排列,wins相同的按name惊进行排列
[{'name': 'David', 'wins': 3, 'losses': 5, 'rating': 57.0}, {'name': 'Carol', 'wins': 4, 'losses': 5, 'rating': 57.0}, {'name': 'Patty', 'wins': 9, 'losses': 3, 'rating': 72.8}, {'name': 'Bob', 'wins': 10, 'losses': 3, 'rating': 75.0}]

根据另一个列表的顺序排列一个列表

>>> list1 = ["what", "I'm", "sorting", "by"]
>>> list2 = ["something", "else", "to", "sort"]
>>> pairs = zip(list1, list2)  #用zip对象压缩
>>> pairs = sorted(pairs)  #新列表按照list1进行排序
>>> pairs
[("I'm", 'else'), ('by', 'sort'), ('sorting', 'to'), ('what', 'something')]
>>> result = [x[1] for x in pairs]  #按新列表中list1的顺序筛选出新列表中的list2部分
>>> result
['else', 'sort', 'to', 'something']

更多关于Python相关内容可查看本站专题:《Python列表(list)操作技巧总结》、《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中__call__用法实例
Aug 29 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
使用turtle绘制五角星、分形树
Oct 06 Python
python画微信表情符的实例代码
Oct 09 Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
Apr 19 Python
Python pandas如何向excel添加数据
May 22 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 #Python
python生成器推导式用法简单示例
Oct 08 #Python
python实现把二维列表变为一维列表的方法分析
Oct 08 #Python
python读文件的步骤
Oct 08 #Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 #Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 #Python
python 使用while写猜年龄小游戏过程解析
Oct 07 #Python
You might like
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
Python发送Email方法实例
2014/08/21 Python
Python中进程和线程的区别详解
2017/10/29 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Python如何进行时间处理
2020/08/06 Python
python regex库实例用法总结
2021/01/03 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
暑期实习鉴定
2013/12/16 职场文书
男方父母证婚词
2014/01/12 职场文书
办公室人员先进事迹
2014/01/27 职场文书
工程专业应届生求职信
2014/02/19 职场文书
车间安全生产标语
2014/06/06 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
异地年检委托书范本
2014/09/24 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
Elasticsearch 批量操作
2022/04/19 Python