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 创建子进程模块subprocess详解
Apr 08 Python
python创建和删除目录的方法
Apr 29 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
Python中字符串List按照长度排序
Jul 01 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
selenium+超级鹰实现模拟登录12306
Jan 24 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中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
php网站地图生成类示例
2014/01/13 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
在Python中使用第三方模块的教程
2015/04/27 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
python实现桌面托盘气泡提示
2019/07/29 Python
wxPython:python首选的GUI库实例分享
2019/10/05 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
django有哪些好处和优点
2020/09/01 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
Python实现简单猜数字游戏
2021/02/03 Python
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
澳洲的服装老品牌:SABA
2018/02/06 全球购物
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
捐助倡议书范文
2014/04/15 职场文书
协议书模板
2014/04/23 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android