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将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
Python 3.x读写csv文件中数字的方法示例
Aug 29 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
Python基于scipy实现信号滤波功能
May 08 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
Python守护进程实现过程详解
Feb 10 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
Python logging模块写入中文出现乱码
May 21 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
python中的yield from语法快速学习
Nov 06 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 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中利用XML技术构造远程服务(上)
2006/10/09 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
js 采用delete实现继承示例代码
2014/05/20 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
python模块restful使用方法实例
2013/12/10 Python
python实现异步回调机制代码分享
2014/01/10 Python
python处理圆角图片、圆形图片的例子
2014/04/25 Python
python的类变量和成员变量用法实例教程
2014/08/25 Python
使用SAE部署Python运行环境的教程
2015/05/05 Python
Python模块文件结构代码详解
2018/02/03 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
幼儿园小班家长寄语
2014/04/02 职场文书
工作作风承诺书
2014/08/30 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
Django 实现jwt认证的示例
2021/04/30 Python