Python中字典(dict)和列表(list)的排序方法实例


Posted in Python onJune 16, 2014

一、对列表(list)进行排序

推荐的排序方式是使用内建的sort()方法,速度最快而且属于稳定排序

>>> a = [1,9,3,7,2,0,5]
>>> a.sort()
>>> print a
[0, 1, 2, 3, 5, 7, 9]
>>> a.sort(reverse=True)
>>> print a
[9, 7, 5, 3, 2, 1, 0]
>>> b = ['e','a','be','ad','dab','dbc']
>>> b.sort()
>>> print b
['a', 'ad', 'be', 'dab', 'dbc', 'e']

对列表的排序是遵循DSU(decorate-sort-undecorate)模式的,序列是安装条目的顺序进行比较的,对刚刚例子中的字符串来说,就是按照从左到右的顺序,逐个字符进行比较,一旦得出结果就停止比较。

二、对字典(dict)进行排序

其实字典(dict)是一个无序序列,谈不上排序,我们只能按照字典的键/值进行排序,然后让对应值/键也处于同样的顺序
任何对字典的排序问题,都要最终归结为对字典(dict)的键(key)或者值(value)组成的列表(list)的排序

1、按字典(dict)的键进行排序[1]

def sortedDictValues(adict,reverse=False):
 keys = adict.keys()
 keys.sort(reverse=reverse)
 return [adict[key] for key in keys]

如果需要同时返回键和值的话,之用将最后的return语句改为:
return [(key,adict[key]]) for key in keys]

还有一种书写简单的方法,就是使用内置的sorted()方法进行排序:
>>> d = {'c':1,'e':'5','b':7}
>>> sorted(d.items())
[('b', 7), ('c', 1), ('e', '5')]

不过性能会有些许的下降,如果很苛求性能,还是使用原生对list.sort()方法比较好

2、按字典(dict)的值进行排序[2]

def sorted_dict(container, keys, reverse):
 """返回 keys 的列表,根据container中对应的值排序"""
 aux = [ (container[k], k) for k in keys]
 aux.sort()
 if reverse: aux.reverse()
 return [k for v, k in aux]

同样可以用sorted()方法实现同样的功能:
sorted(d.items(), key=lambda d:d[1], reverse=True)

三、结语

通过以上代码的分析,大致总结处以下几条原则:
* 对字典的排序,最终都要归结为对字典的键或者值组成的列表的排序
* 对列表的排序,优先使用内置的list.sort()方法

Python 相关文章推荐
Python 元组(Tuple)操作详解
Mar 11 Python
python进程管理工具supervisor使用实例
Sep 17 Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
django日志默认打印request请求信息的方法示例
May 17 Python
浅谈python锁与死锁问题
Aug 14 Python
python自动化调用百度api解决验证码
Apr 13 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 Python
Python实现的几个常用排序算法实例
Jun 16 #Python
Python中文件遍历的两种方法
Jun 16 #Python
Python里隐藏的“禅”
Jun 16 #Python
Python程序设计入门(5)类的使用简介
Jun 16 #Python
Python程序设计入门(4)模块和包
Jun 16 #Python
Python程序设计入门(3)数组的使用
Jun 16 #Python
Python程序设计入门(2)变量类型简介
Jun 16 #Python
You might like
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
python中xrange用法分析
2015/04/15 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
python的json包位置及用法总结
2020/06/21 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
节能宣传周活动总结
2014/05/08 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
2015年小学开学寄语
2015/02/27 职场文书
《开国大典》教学反思
2016/02/16 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
使用golang编写一个并发工作队列
2021/05/08 Golang