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使用7z解压软件备份文件脚本分享
Feb 21 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
django1.8使用表单上传文件的实现方法
Nov 04 Python
Python实现螺旋矩阵的填充算法示例
Dec 28 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
Python闭包函数定义与用法分析
Jul 20 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
Python基本socket通信控制操作示例
Jan 30 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
python 实现mysql自动增删分区的方法
Apr 01 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错误、异常处理机制(补充)
2012/05/07 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
对联广告js flash激活
2006/10/19 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
Python获取邮件地址的方法
2015/07/10 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
python实现多人聊天室
2020/03/31 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
浅析matlab中imadjust函数
2020/02/27 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
如何查找网页漏洞
2016/06/22 面试题
行政人事经理职位说明书
2014/03/05 职场文书
诚信承诺书模板
2014/05/26 职场文书
2014年工会工作总结
2014/11/12 职场文书
邀请函样本
2015/02/02 职场文书
学校节水倡议书
2015/04/29 职场文书
初中团委工作总结
2015/08/13 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书