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语言中的按位运算符
Nov 26 Python
使用python实现strcmp函数功能示例
Mar 25 Python
最基础的Python的socket编程入门教程
Apr 23 Python
用Python的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
彻底搞懂Python字符编码
Jan 23 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
python格式化输出保留2位小数的实现方法
Jul 02 Python
Python实现TCP通信的示例代码
Sep 09 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 Python
python实现调用摄像头并拍照发邮箱
Apr 27 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 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/07/17 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
简单谈谈favicon
2015/06/10 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
PHP7 弃用功能
2021/03/09 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
javascript 数组的方法集合
2008/06/05 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
秘书英文求职信范文
2014/01/31 职场文书
监护人证明
2015/06/19 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
Python基础之Socket通信原理
2021/04/22 Python
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers
MySQL优化之慢日志查询
2022/06/10 MySQL