Python的collections模块中的OrderedDict有序字典


Posted in Python onJuly 07, 2016

如同这个数据结构的名称所说的那样,它记录了每个键值对添加的顺序。

d = OrderedDict()
d['a'] = 1
d['b'] = 10
d['c'] = 8
for letter in d:
  print letter

输出:   

a
b
c

如果初始化的时候同时传入多个参数,它们的顺序是随机的,不会按照位置顺序存储。

>>> d = OrderedDict(a=1, b=2, c=3)
OrderedDict([('a', 1), ('c', 3), ('b', 2)])

除了和正常的 dict 相同的方法之外,OrderedDict 还提供了和顺序相关的操作: + popitem(): 返回最后一个插入的键值对,如果 popitem(last=False) 将返回第一个插入的键值对 + reversed:返回一个逆序的 OrderedDict

实例
其实,OrderedDict可以看作是一个字典子类:

import collections
print 'Regular dictionary:'
d = {}
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
for k, v in d.items():
  print k, v
print '\nOrderDict:'
d = collections.OrderedDict()
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
for k, v in d.items():
  print k, v

常规dict并不跟踪插入顺序,迭代处理会根据键在散列表中存储的顺序来生成值。在OrderDict中则相反,它会记住元素插入的顺序,并在创建迭代器时使用这个顺序。

Regular dictionary:
a A
c C
b B
OrderDict:
a A
b B
c C

常规dict在检查相等性是会查看其内容,OrderDict中还会考虑元素增加的顺序。

Python 相关文章推荐
python支持断点续传的多线程下载示例
Jan 16 Python
python设置检查点简单实现代码
Jul 01 Python
python中执行shell命令的几个方法小结
Sep 18 Python
Python进程通信之匿名管道实例讲解
Apr 11 Python
Python使用functools实现注解同步方法
Feb 06 Python
解决django前后端分离csrf验证的问题
Feb 03 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
python__name__原理及用法详解
Nov 02 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
OpenCV实现常见的四种图像几何变换
Apr 01 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 #Python
详解Python的collections模块中的deque双端队列结构
Jul 07 #Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 #Python
Python处理json字符串转化为字典的简单实现
Jul 07 #Python
全面了解python字符串和字典
Jul 07 #Python
对于Python中RawString的理解介绍
Jul 07 #Python
python变量不能以数字打头详解
Jul 06 #Python
You might like
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
Python中optparse模块使用浅析
2015/01/01 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
基于python实现文件加密功能
2020/01/06 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
python matlab库简单用法讲解
2020/12/31 Python
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
StubHub德国:购买和出售门票
2017/09/06 全球购物
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
销售求职信范文
2014/05/26 职场文书
环保志愿者活动方案
2014/08/14 职场文书
2014年司法所工作总结
2014/11/22 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle
Java基础——Map集合
2022/04/01 Java/Android