python字典排序实例详解


Posted in Python onMay 20, 2015

本文实例分析了python字典排序的方法。分享给大家供大家参考。具体如下:

1、 准备知识:

在python里,字典dictionary是内置的数据类型,是个无序的存储结构,每一元素是key-value对:
如:dict = {'username':'password','database':'master'},其中'username'和'database'是key,而'password'和'master'是value,可以通过d[key]获得对应值value的引用,但是不能通过value得到key。

对于dictionnary,需知道以下几点注意事项:

a、 dictionary 的 key 是大小写敏感的;
b、 一个dictionary中不能有重复的 key;
c、 dictionary是无序的,没有元素顺序的概念,它们只是序偶的简单排列。

2、 字典排序实现:

前面已说明dictionary本身没有顺序概念,但是总是在某些时候,但是我们常常需要对字典进行排序,怎么做呢?下面告诉你:

方法1:最简单的方法,排列元素(key/value对),然后挑出值。字典的items方法,会返回一个元组的列表,其中每个元组都包含一对项目——键与对应的值。此时排序可以sort()方法。

def sortedDictValues1(adict):
  items = adict.items()
  items.sort()
  return [value for key, value in items]

方法2:使用排列键(key)的方式,挑出值,速度比方法1快。字典对象的keys()方法返回字典中所有键值组成的列表,次序是随机的。需要排序时只要对返回的键值列表使用sort()方法。

def sortedDictValues1(adict):
  keys = adict.keys()
  keys.sort()
  return [adict[key] for key in keys]

方法3:通过映射的方法去更有效的执行最后一步

def sortedDictValues1(adict):
  keys = adict.keys()
  keys.sort()
  return map(adict.get,keys)

方法4:对字典按键排序,用元组列表的形式返回,同时使用lambda函数来进行;
sorted(iterable[, cmp[, key[, reverse]]]
cmp和key一般使用lambda
如:

>>> d={"ok":1,"no":2}#对字典按键排序,用元组列表的形式返回
>>> sorted(d.items, key=lambda d:d[0])
[('no', 2), ('ok', 1)]

对字典按值排序,用元组列表的形式返回

>>> sorted(d.items, key=lambda d:d[1])
[('ok', 1), ('no', 2)]

对字典元素的排序虽然有好多种方法,这里也没有总结全,但如果对程序效率没有太高要求,选择喜欢的用就好。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
Python引用传值概念与用法实例小结
Oct 07 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
Python读取mat文件,并转为csv文件的实例
Jul 04 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
解决安装pycharm后不能执行python脚本的问题
Jan 19 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
Django项目中实现使用qq第三方登录功能
Aug 13 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
python获得命令行输入的参数的两种方式
Nov 02 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 Python
在Python中操作字符串之startswith()方法的使用
May 20 #Python
Python中splitlines()方法的使用简介
May 20 #Python
在Python中用split()方法分割字符串的使用介绍
May 20 #Python
Python编程之多态用法实例详解
May 19 #Python
Python编程之属性和方法实例详解
May 19 #Python
python实现提取百度搜索结果的方法
May 19 #Python
在Python中操作字符串之rstrip()方法的使用
May 19 #Python
You might like
建立动态的WML站点(三)
2006/10/09 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
node.js基础知识小结
2018/02/26 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
python求斐波那契数列示例分享
2014/02/14 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
vue常用指令代码实例总结
2020/03/16 Python
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
大学生自我鉴定
2013/12/08 职场文书
生日宴会答谢词
2014/01/09 职场文书
财务部经理岗位职责
2014/02/03 职场文书
学期评语大全
2014/04/30 职场文书
高校教师个人工作总结2014
2014/12/17 职场文书
项目安全员岗位职责
2015/02/15 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js