python模块简介之有序字典(OrderedDict)


Posted in Python onDecember 01, 2016

有序字典-OrderedDict简介

示例

有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的。参见下面的例子:

import collections

print 'Regular dictionary:'
d = {}
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
d['d'] = 'D'
d['e'] = 'E'

for k, v in d.items():
  print k, v

print '\nOrderedDict:'
d = collections.OrderedDict()
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
d['d'] = 'D'
d['e'] = 'E'

for k, v in d.items():
  print k, v

运行结果如下:

-> python test7.py
Regular dictionary:
a A
c C
b B
e E
d D

OrderedDict:
a A
b B
c C
d D
e E

可以看到通常字典不是以插入顺序遍历的。

相等性

判断两个有序字段是否相等(==)需要考虑元素插入的顺序是否相等

import collections

print 'dict    :',
d1 = {}
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = {}
d2['e'] = 'E'
d2['d'] = 'D'
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'

print d1 == d2

print 'OrderedDict:',

d1 = collections.OrderedDict()
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = collections.OrderedDict()
d2['e'] = 'E'
d2['d'] = 'D'
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'

print d1 == d2

运行结果如下:

-> python test7.py
dict    : True
OrderedDict: False

而当判断一个有序字典和其它普通字典是否相等只需判断内容是否相等。

注意

OrderedDict 的构造器或者 update() 方法虽然接受关键字参数,但因为python的函数调用会使用无序的字典来传递参数,所以关键字参数的顺序会丢失,所以创造出来的有序字典不能保证其顺序。

参考资料

https://docs.python.org/2/library/collections.html#collections.OrderedDict
https://pymotw.com/2/collections/ordereddict.html

Python 相关文章推荐
《Python之禅》中对于Python编程过程中的一些建议
Apr 03 Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
python实现堆排序的实例讲解
Feb 21 Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 Python
python 安装impala包步骤
Mar 28 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
Python timeit模块原理及使用方法
Oct 10 Python
python字符串拼接+和join的区别详解
Dec 03 Python
python 实现IP子网计算
Feb 18 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 22 Python
python实现手机推送 代码也就10行左右
Apr 12 Python
Python中字符串的修改及传参详解
Nov 30 #Python
简单谈谈Python中的闭包
Nov 30 #Python
浅析Python中yield关键词的作用与用法
Nov 29 #Python
Python中 Lambda表达式全面解析
Nov 28 #Python
利用Python抓取行政区划码的方法
Nov 28 #Python
Python抓取手机号归属地信息示例代码
Nov 28 #Python
Python文本相似性计算之编辑距离详解
Nov 28 #Python
You might like
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
Js 随机数产生6位数字
2010/05/13 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
解决python flask中config配置管理的问题
2019/07/26 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
卫校中专生个人自我评价
2013/09/19 职场文书
中专生自我鉴定范文
2013/12/19 职场文书
小学教师国培感言
2014/02/08 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
Python 数据可视化之Matplotlib详解
2021/11/02 Python