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下用于监视文件系统的pyinotify包
Nov 13 Python
Python如何实现MySQL实例初始化详解
Nov 06 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
在python中实现对list求和及求积
Nov 14 Python
Python制作动态字符图的实例
Jan 27 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
Python的pygame安装教程详解
Feb 10 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
为什么说python更适合树莓派编程
Jul 20 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
python中24小时制转换为12小时制的方法
Jun 18 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
PHP实现Socket服务器的代码
2008/04/03 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
vue实现倒计时获取验证码效果
2020/04/17 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
python 获取字符串MD5值方法
2018/05/29 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
Python实现代码块儿折叠
2020/04/15 Python
Python 如何创建一个线程池
2020/07/28 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
聘用意向书
2014/07/29 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书