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 相关文章推荐
2款Python内存检测工具介绍和使用方法
Jun 01 Python
python制作花瓣网美女图片爬虫
Oct 28 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
基于python的Tkinter编写登陆注册界面
Jun 30 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
python框架中flask知识点总结
Aug 17 Python
Python连接Redis的基本配置方法
Sep 13 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
解决Django layui {{}}冲突的问题
Aug 29 Python
解决keras backend 越跑越慢问题
Jun 18 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
Python一些基本的图像操作和处理总结
Jun 23 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对象递归引用造成内存泄漏分析
2014/08/28 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
python字符串常用方法
2018/06/14 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
PyTorch安装与基本使用详解
2020/08/31 Python
详解python中的异常捕获
2020/12/15 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
酒店拾金不昧表扬信
2014/01/18 职场文书
办公室文员自荐书
2014/02/03 职场文书
合作投资意向书
2014/04/01 职场文书
2014年督导工作总结
2014/11/19 职场文书
财务会计岗位职责
2015/02/03 职场文书