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 中 Virtualenv 和 pip 的简单用法详解
Aug 18 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
Python爬取成语接龙类网站
Oct 19 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
在python 中实现运行多条shell命令
Jan 07 Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
python 伯努利分布详解
Feb 25 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
matplotlib.pyplot.plot()参数使用详解
Jul 28 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 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
ecshop实现smtp发送邮件
2015/02/03 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
js获取单选按钮的数据
2006/11/27 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
django-初始配置(纯手写)详解
2019/07/30 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
婚礼主持词
2014/03/13 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
销售目标责任书
2014/07/23 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
小学班主任工作随笔
2015/08/15 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python