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 with statement 进行文件操作指南
Aug 22 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
python hashlib加密实现代码
Oct 17 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
jenkins+python自动化测试持续集成教程
May 12 Python
如何使用python记录室友的抖音在线时间
Jun 29 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
Python高并发解决方案实现过程详解
Jul 31 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 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
德生S2000电路分析
2021/03/02 无线电
怎样在UNIX系统下安装php3
2006/10/09 PHP
PHP 开发环境配置(测试开发环境)
2010/04/28 PHP
PHP array_multisort()函数的使用札记
2011/07/03 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
布同自制Python函数帮助查询小工具
2011/03/13 Python
python从入门到精通(DAY 3)
2015/12/20 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
Python内存映射文件读写方式
2020/04/24 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
初中化学教学反思
2014/01/23 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL