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定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
跟老齐学Python之让人欢喜让人忧的迭代
Oct 02 Python
python实现一次创建多级目录的方法
May 15 Python
Python 模块EasyGui详细介绍
Feb 19 Python
python操作mysql代码总结
Jun 01 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
Python实现仿射密码的思路详解
Apr 23 Python
Python绘制动态水球图过程详解
Jun 03 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
Django数据统计功能count()的使用
Nov 30 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 24 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 获取目录下的图片并随机显示的代码
2009/12/28 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
js类中的公有变量和私有变量
2008/07/24 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
javascript设计模式之迭代器模式
2020/01/30 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python selenium如何设置等待时间
2016/09/15 Python
Python实现的字典值比较功能示例
2018/01/08 Python
Python面向对象之继承代码详解
2018/01/29 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
python 获取url中的参数列表实例
2018/12/18 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
数据库的约束含义
2012/09/09 面试题
学子宴答谢词
2014/01/25 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
考研英语复习计划
2015/01/19 职场文书
施工员岗位职责
2015/02/10 职场文书
大学生支教感言
2015/08/01 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
我的收音机情缘
2022/04/05 无线电