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读取csv文件示例(python操作csv)
Mar 11 Python
python实现类似ftp传输文件的网络程序示例
Apr 08 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
django项目登录中使用图片验证码的实现方法
Aug 15 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
python线性插值解析
Jul 05 Python
Python单元测试及unittest框架用法实例解析
Jul 09 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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
php简单浏览目录内容的实现代码
2013/06/07 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
django框架如何集成celery进行开发
2017/05/24 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
幼儿园大班教学反思
2014/02/10 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
电台实习生求职信
2014/02/25 职场文书
事务机电主管工作职责
2014/02/25 职场文书
银行转正自我鉴定
2014/09/29 职场文书
会议欢迎词
2015/01/23 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android