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求解平方根的方法
Mar 11 Python
浅谈Python数据类型之间的转换
Jun 08 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
python如何使用Redis构建分布式锁
Jan 16 Python
开启Django博客的RSS功能的实现方法
Feb 17 Python
django filter过滤器实现显示某个类型指定字段不同值方式
Jul 16 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
python 基于Apscheduler实现定时任务
Dec 15 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 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中实现进程间通讯
2006/10/09 PHP
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
javascript基本语法
2016/05/31 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
javascript回调函数的概念理解与用法分析
2017/05/27 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
2018/08/20 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
机械系大学毕业生推荐信
2013/11/27 职场文书
回门宴答谢词
2014/01/13 职场文书
房产分割协议书范文
2014/11/21 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
2016公司新年问候语
2015/11/11 职场文书
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python