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实例之wxpython中Frame使用方法
Jun 09 Python
使用Python对MySQL数据操作
Apr 06 Python
python WindowsError的错误代码详解
Jul 23 Python
Python中的Django基本命令实例详解
Jul 15 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
python中的global关键字的使用方法
Aug 20 Python
python 画函数曲线示例
Dec 04 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
python3中使用__slots__限定实例属性操作分析
Feb 14 Python
Selenium启动Chrome时配置选项详解
Mar 18 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
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
分页栏的web标准实现
2011/11/01 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
JS获取html对象的几种方式介绍
2013/12/05 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Python Tkinter简单布局实例教程
2014/09/03 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
python实现最短路径的实例方法
2020/07/19 Python
python合并多个excel文件的示例
2020/09/23 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
《谁的本领大》教后反思
2014/04/25 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
个人廉政承诺书
2015/04/28 职场文书
学子宴致辞大全
2015/07/27 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
mysql的单列多值存储实例详解
2022/04/05 MySQL