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实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
python中pygame模块用法实例
Oct 09 Python
python异常和文件处理机制详解
Jul 19 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
python实现将读入的多维list转为一维list的方法
Jun 28 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
numpy.linspace函数具体使用详解
May 27 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
如何使用Python提取Chrome浏览器保存的密码
Jun 09 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/11/26 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
js验证表单大全
2006/11/25 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
Python 迭代器与生成器实例详解
2017/05/18 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
python自动生成model文件过程详解
2019/11/02 Python
用python进行视频剪辑
2020/11/02 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
《彩色世界》教学反思
2014/04/12 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
校庆标语集锦
2014/06/25 职场文书
运动会主持人开幕词
2016/03/04 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
详解python的异常捕获
2022/03/03 Python