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使用nntp读取新闻组内容的方法
May 08 Python
python3抓取中文网页的方法
Jul 28 Python
详解Python中的动态属性和特性
Apr 07 Python
python批量替换多文件字符串问题详解
Apr 22 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
python实现自动化上线脚本的示例
Jul 01 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
详解Python3中的 input() 函数
Mar 18 Python
django下创建多个app并设置urls方法
Aug 02 Python
实现Python3数组旋转的3种算法实例
Sep 16 Python
Python使用openpyxl批量处理数据
Jun 23 Python
python自动化八大定位元素讲解
Jul 09 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 mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
php代码架构的八点注意事项
2016/01/25 PHP
php设计模式之委托模式
2016/02/13 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
javascript编写简易计算器
2017/05/06 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
PHP面试题-$message和$$message的区别
2015/12/08 面试题
教师党员个人整改措施材料
2014/09/16 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
2014年检验科工作总结
2014/11/22 职场文书
退休教师追悼词
2015/06/23 职场文书
2016天猫双十一广告语
2016/01/28 职场文书