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编程中对super函数的正确理解和用法解析
Jul 02 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
Python使用pickle模块储存对象操作示例
Aug 15 Python
python爬虫获取新浪新闻教学
Dec 23 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 Python
python3 kubernetes api的使用示例
Jan 12 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
May 06 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下网站防IP攻击代码,超级实用
2010/10/24 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
显示、隐藏密码
2006/07/01 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
Python修改MP3文件的方法
2015/06/15 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
PyQt5每天必学之布局管理
2018/04/19 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
浅谈Python基础—判断和循环
2019/03/22 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
opencv+python实现均值滤波
2020/02/19 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
廉洁自律承诺书
2014/03/27 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
护理专业自荐信范文
2015/03/06 职场文书
同意转租证明
2015/06/24 职场文书
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript