python中OrderedDict的使用方法详解


Posted in Python onMay 05, 2017

很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),里面自带了一个子类

OrderedDict,实现了对字典对象中元素的排序。请看下面的实例:

import collections
print "Regular dictionary"
d={}
d['a']='A'
d['b']='B'
d['c']='C'
for k,v in d.items():
  print k,v

print "\nOrder dictionary"
d1 = collections.OrderedDict()
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['1'] = '1'
d1['2'] = '2'
for k,v in d1.items():
  print k,v

输出:

Regular dictionary
a A
c C
b B

Order dictionary
a A
b B
c C
1 1
2 2

可以看到,同样是保存了ABC等几个元素,但是使用OrderedDict会根据放入元素的先后顺序进行排序。所以输出的值是排好序的。

OrderedDict对象的字典对象,如果其顺序不同那么Python也会把他们当做是两个不同的对象,请看事例:

print 'Regular dictionary:'
d2={}
d2['a']='A'
d2['b']='B'
d2['c']='C'

d3={}
d3['c']='C'
d3['a']='A'
d3['b']='B'

print d2 == d3

print '\nOrderedDict:'
d4=collections.OrderedDict()
d4['a']='A'
d4['b']='B'
d4['c']='C'

d5=collections.OrderedDict()
d5['c']='C'
d5['a']='A'
d5['b']='B'

print d1==d2

输出:

Regular dictionary:
True

OrderedDict:
False

再看几个例子:

dd = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
#按key排序
kd = collections.OrderedDict(sorted(dd.items(), key=lambda t: t[0]))
print kd
#按照value排序
vd = collections.OrderedDict(sorted(dd.items(),key=lambda t:t[1]))
print vd

#输出
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django中更新多个对象数据与删除对象的方法
Jul 17 Python
Python检测网站链接是否已存在
Apr 07 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
详解Django中间件的5种自定义方法
Jul 26 Python
如何基于Python创建目录文件夹
Dec 31 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
python实现学生成绩测评系统
Jun 22 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
详解pandas映射与数据转换
Jan 22 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
python3实现无权最短路径的方法
May 12 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 Python
Python编程生成随机用户名及密码的方法示例
May 05 #Python
Python实现统计文本文件字数的方法
May 05 #Python
Python部署web开发程序的几种方法
May 05 #Python
Python中异常重试的解决方案详解
May 05 #Python
Django的信号机制详解
May 05 #Python
Python中模块与包有相同名字的处理方法
May 05 #Python
详解python 字符串和日期之间转换 StringAndDate
May 04 #Python
You might like
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
页面载入结束自动调用js函数示例
2013/09/23 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
如何用python整理附件
2018/05/13 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
Python API自动化框架总结
2019/11/12 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
如何用Python绘制3D柱形图
2020/09/16 Python
Pycharm中如何关掉python console
2020/10/27 Python
Python 多进程原理及实现
2020/12/21 Python
药学专业大学生自荐信
2013/09/28 职场文书
励志演讲稿范文
2014/04/29 职场文书
2015年元旦活动总结
2014/05/09 职场文书
质量主管工作职责
2014/09/26 职场文书
管理失职检讨书
2015/05/05 职场文书