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多线程编程方式分析示例详解
Dec 06 Python
在Python中调用ggplot的三种方法
Apr 08 Python
举例详解Python中yield生成器的用法
Aug 05 Python
Python中内建函数的简单用法说明
May 05 Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
Python如何急速下载第三方库详解
Nov 02 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
python工具——Mimesis的简单使用教程
Jan 16 Python
使用pandas模块实现数据的标准化操作
May 14 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
生成静态页面的PHP类
2006/07/15 PHP
PHP explode()函数用法、切分字符串
2012/10/03 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
微信小程序radio组件使用详解
2018/01/31 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
python使用7z解压软件备份文件脚本分享
2014/02/21 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
python轮询机制控制led实例
2020/05/03 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
几个常见的软件测试问题
2016/09/07 面试题
北京大学自荐信范文
2014/01/28 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
升学宴祝酒词
2015/08/11 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
Win10 Anaconda安装python-pcl
2022/04/29 Servers