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检测是文件还是目录的方法
Jul 03 Python
python实现感知器算法详解
Dec 19 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
Python3.5面向对象程序设计之类的继承和多态详解
Apr 24 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
浅谈python的elementtree模块处理中文注意事项
Mar 06 Python
通过Python实现一个简单的html页面
May 16 Python
Python中logger日志模块详解
Aug 04 Python
python 邮件检测工具mmpi的使用
Jan 04 Python
python爬虫之selenium库的安装及使用教程
May 23 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 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中使用Oracle数据库(3)
2006/10/09 PHP
在php MYSQL中插入当前时间
2008/04/06 PHP
php+highchats生成动态统计图
2014/05/21 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
将HTML自动转为JS代码
2006/06/26 Javascript
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
python2 与python3的print区别小结
2018/01/16 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
numpy.where() 用法详解
2019/05/27 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
如何利用python读取micaps文件详解
2020/10/18 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
留学顾问岗位职责
2014/04/14 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
MongoDB支持的数据类型
2022/04/11 MongoDB