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 getopt 参数处理小示例
Jun 09 Python
Python中pygame的mouse鼠标事件用法实例
Nov 11 Python
Python编程pygal绘图实例之XY线
Dec 09 Python
Python中sort和sorted函数代码解析
Jan 25 Python
Python装饰器知识点补充
May 28 Python
python实时监控cpu小工具
Jun 21 Python
python提取log文件内容并画出图表
Jul 08 Python
python logging模块的使用总结
Jul 09 Python
Python中常用的高阶函数实例详解
Feb 21 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
Python下载的11种姿势(小结)
Nov 18 Python
浅谈matplotlib默认字体设置探索
Feb 03 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 Undefined index和Undefined variable的解决方法
2008/03/27 PHP
php session 错误
2009/05/21 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
python对url格式解析的方法
2015/05/13 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python聊天室程序(基础版)
2018/04/01 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
酒店总经理职务说明书
2014/02/26 职场文书
《识字五》教学反思
2014/03/01 职场文书
公司办公室岗位职责
2014/03/19 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书