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简单猜数游戏实例
Jul 09 Python
python连接mysql实例分享
Oct 09 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
什么是Python中的匿名函数
Jun 02 Python
Python使用windows设置定时执行脚本
Nov 12 Python
call在Python中改进数列的实例讲解
Dec 09 Python
如何通过python检查文件是否被占用
Dec 18 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 Python
Python使用tkinter实现小时钟效果
Feb 22 Python
numpy数据类型dtype转换实现
Apr 24 Python
Python进程间的通信之语法学习
Apr 11 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
python实现端口转发器的方法
2015/03/13 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
python pygame实现2048游戏
2018/11/20 Python
浅谈Python反射 & 单例模式
2019/03/21 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
django创建简单的页面响应实例教程
2019/09/06 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
出纳员岗位职责风险
2014/03/06 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
售房委托书
2014/08/30 职场文书
课外活动总结
2015/02/04 职场文书
监理中标通知书
2015/04/16 职场文书
孟佩杰观后感
2015/06/17 职场文书
python process模块的使用简介
2021/05/14 Python
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
python程序的组织结构详解
2021/12/06 Python
java实现面板之间切换功能
2022/06/10 Java/Android