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判断操作系统类型代码分享
Nov 22 Python
在Python中使用itertools模块中的组合函数的教程
Apr 13 Python
Python NumPy库安装使用笔记
May 18 Python
在Python中使用next()方法操作文件的教程
May 24 Python
约瑟夫问题的Python和C++求解方法
Aug 20 Python
Python Nose框架编写测试用例方法
Oct 26 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
pytorch 预训练层的使用方法
Aug 20 Python
python 回溯法模板详解
Feb 26 Python
python 如何快速复制序列
Sep 07 Python
pandas 数据类型转换的实现
Dec 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
PHP+DBM的同学录程序(5)
2006/10/09 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
python字典排序实例详解
2015/05/20 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python中time库的实例使用方法
2019/10/31 Python
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
机械设计制造专业个人求职信
2013/09/25 职场文书
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
班主任寄语2015
2015/02/26 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
销售开票员岗位职责
2015/04/15 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript