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抓取百度查询结果的方法
Jul 08 Python
Python编写电话薄实现增删改查功能
May 07 Python
Python Unittest自动化单元测试框架详解
Apr 04 Python
Python设计模式之原型模式实例详解
Jan 18 Python
Python玩转加密的技巧【推荐】
May 13 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
Python numpy线性代数用法实例解析
Nov 15 Python
Python集合操作方法详解
Feb 09 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 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中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
jQuery学习笔记之Helloworld
2010/12/22 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
详解nodejs微信公众号开发——4.自动回复各种消息
2017/04/11 NodeJs
详解Angular 4 表单快速入门
2017/06/05 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
毕业研究生的自我鉴定
2013/11/30 职场文书
中国好声音华少广告词
2014/03/17 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
英文感谢信范文
2015/01/21 职场文书
感谢信格式范文
2015/01/22 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
2016新年问候语大全
2015/11/11 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
决心书格式及范文
2019/06/24 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang