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批量修改文件名的实现代码
Sep 01 Python
在Python的web框架中编写创建日志的程序的教程
Apr 30 Python
Python使用CMD模块更优雅的运行脚本
May 11 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
python递归下载文件夹下所有文件
Aug 31 Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
详解Python小数据池和代码块缓存机制
Apr 07 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 可阅读随机字符串代码
2010/05/26 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
专营店会计助理岗位职责
2013/11/29 职场文书
幼儿教师考核制度
2014/01/25 职场文书
项目投资建议书
2014/05/16 职场文书
白酒营销策划方案
2014/08/17 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
观看焦裕禄观后感
2015/06/09 职场文书