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实现批量下载图片的方法
Jul 08 Python
Python对数据库操作
Mar 28 Python
Python的string模块中的Template类字符串模板用法
Jun 27 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
Python MySQLdb 执行sql语句时的参数传递方式
Mar 04 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 Python
python基础之停用词过滤详解
Apr 21 Python
Python快速实现一键抠图功能的全过程
Jun 29 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
COM in PHP (winows only)
2006/10/09 PHP
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
php生成mysql的数据字典
2016/07/07 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
使用PHP开发留言板功能
2019/11/19 PHP
Js中sort()方法的用法
2006/11/04 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
Vue配置marked链接添加target="_blank"的方法
2019/07/19 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
详解Python中的序列化与反序列化的使用
2015/06/30 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
读书小明星事迹材料
2014/05/03 职场文书
环保倡议书500字
2014/05/15 职场文书
管理工程专业求职信
2014/08/10 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
安全员岗位职责
2015/02/10 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书