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操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
pandas 透视表中文字段排序方法
Nov 16 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
Jun 08 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
python3中sys.argv的实例用法
Apr 24 Python
详解python如何引用包package
Jun 07 Python
Python如何读写CSV文件
Aug 13 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计算两个日期相差天数的方法
2015/03/14 PHP
永不消失的title提示代码
2007/02/15 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
Sanic框架配置操作分析
2018/07/17 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
python爬虫请求头设置代码
2020/07/28 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
用python对excel查重
2020/12/07 Python
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
市优秀教师事迹材料
2014/02/05 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技