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中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
python里大整数相乘相关技巧指南
Sep 12 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
python实现守护进程、守护线程、守护非守护并行
May 05 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
查看python下OpenCV版本的方法
Aug 03 Python
python计算两个矩形框重合百分比的实例
Nov 07 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
解决json中ensure_ascii=False的问题
Apr 03 Python
python实现定时发送邮件
Dec 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
php+dbfile开发小型留言本
2006/10/09 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
python set内置函数的具体使用
2019/07/02 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
pytorch标签转onehot形式实例
2020/01/02 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
python中def是做什么的
2020/06/10 Python
Python实现疫情地图可视化
2021/02/05 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
Linux机考试题
2015/07/17 面试题
初中美术教学反思
2014/01/29 职场文书
策划创业计划书
2014/02/06 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
学生检讨书范文
2014/10/30 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
Python中request的基本使用解决乱码问题
2022/04/12 Python