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中编写并发程序
Feb 27 Python
django1.8使用表单上传文件的实现方法
Nov 04 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
Python 硬币兑换问题
Jul 29 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
Python内置类型性能分析过程实例
Jan 29 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 15 Python
Python操作Excel把数据分给sheet
May 20 Python
python的数学算法函数及公式用法
Nov 18 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 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
239军机修复记
2021/03/02 无线电
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
读jQuery之十 事件模块概述
2011/06/27 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
详解vue组件通信的三种方式
2017/06/30 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
python中使用mysql数据库详细介绍
2015/03/27 Python
python比较两个列表大小的方法
2015/07/11 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
Java基础知识面试要点
2016/07/29 面试题
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
房地产管理毕业生自荐信
2013/11/04 职场文书
副厂长岗位职责
2014/02/02 职场文书
食品安全工作实施方案
2014/03/26 职场文书
英语专业求职信
2014/07/08 职场文书
机器人瓦力观后感
2015/06/12 职场文书
一年级下册数学教学反思
2016/02/16 职场文书