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发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
Python中条件选择和循环语句使用方法介绍
Mar 13 Python
python装饰器与递归算法详解
Feb 18 Python
Python中文件的读取和写入操作
Apr 27 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
python覆盖写入,追加写入的实例
Jun 26 Python
python redis连接 有序集合去重的代码
Aug 04 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
pytorch masked_fill报错的解决
Feb 18 Python
python读写文件write和flush的实现方式
Feb 21 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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 cout<<的一点看法
2010/01/24 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
JS返回顶部实例代码
2020/08/09 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
PyCharm配置mongo插件的方法
2018/11/30 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
python使用建议技巧分享(三)
2020/08/18 Python
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
党支部承诺书范文
2014/03/28 职场文书
股份合作协议书范本
2014/04/14 职场文书
介绍信范文大全
2015/05/07 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
青年教师听课心得体会
2016/01/15 职场文书
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android