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正则表达式操作指南(re使用)
Sep 06 Python
python插入排序算法的实现代码
Nov 21 Python
python实现简易云音乐播放器
Jan 04 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 Python
pytorch之inception_v3的实现案例
Jan 06 Python
Python Django搭建网站流程图解
Jun 13 Python
使用OpenCV实现道路车辆计数的使用方法
Jul 15 Python
如何使用pycharm连接Databricks的步骤详解
Sep 23 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
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
jQuery调用WebService的实现代码
2011/06/19 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
js实现移动端轮播图
2020/12/21 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
js实现转动骰子模型
2019/10/24 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
详解重置Django migration的常见方式
2019/02/15 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
个人自我评价分享
2013/12/20 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
给校长的建议书600字
2014/05/15 职场文书
艺术节开幕词
2015/01/28 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL