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处理大数字的方法
May 27 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
详解Python的Django框架中manage命令的使用与扩展
Apr 11 Python
node.js获取参数的常用方法(总结)
May 29 Python
Python高级用法总结
May 26 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
Python数据存储之 h5py详解
Dec 26 Python
Python装饰器的应用场景代码总结
Apr 10 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
对PyTorch中inplace字段的全面理解
May 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编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
python进程与线程小结实例分析
2018/11/11 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
python读写csv文件方法详细总结
2019/07/05 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
在pycharm中显示python画的图方法
2019/08/31 Python
原生python实现knn分类算法
2019/10/24 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
医学生个人求职信范文
2014/02/07 职场文书
干部下基层实施方案
2014/03/14 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
授权委托书样本
2014/09/25 职场文书
Python道路车道线检测的实现
2021/06/27 Python