python中OrderedDict的使用方法详解


Posted in Python onMay 05, 2017

很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),里面自带了一个子类

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 "\nOrder dictionary"
d1 = collections.OrderedDict()
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['1'] = '1'
d1['2'] = '2'
for k,v in d1.items():
  print k,v

输出:

Regular dictionary
a A
c C
b B

Order dictionary
a A
b B
c C
1 1
2 2

可以看到,同样是保存了ABC等几个元素,但是使用OrderedDict会根据放入元素的先后顺序进行排序。所以输出的值是排好序的。

OrderedDict对象的字典对象,如果其顺序不同那么Python也会把他们当做是两个不同的对象,请看事例:

print 'Regular dictionary:'
d2={}
d2['a']='A'
d2['b']='B'
d2['c']='C'

d3={}
d3['c']='C'
d3['a']='A'
d3['b']='B'

print d2 == d3

print '\nOrderedDict:'
d4=collections.OrderedDict()
d4['a']='A'
d4['b']='B'
d4['c']='C'

d5=collections.OrderedDict()
d5['c']='C'
d5['a']='A'
d5['b']='B'

print d1==d2

输出:

Regular dictionary:
True

OrderedDict:
False

再看几个例子:

dd = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
#按key排序
kd = collections.OrderedDict(sorted(dd.items(), key=lambda t: t[0]))
print kd
#按照value排序
vd = collections.OrderedDict(sorted(dd.items(),key=lambda t:t[1]))
print vd

#输出
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python解析JSON数据的基本方法
Oct 15 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
Python嵌套式数据结构实例浅析
Mar 05 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 Python
python实现大文本文件分割
Jul 22 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
Python导入模块包原理及相关注意事项
Mar 25 Python
Python数据正态性检验实现过程
Apr 18 Python
Python编程生成随机用户名及密码的方法示例
May 05 #Python
Python实现统计文本文件字数的方法
May 05 #Python
Python部署web开发程序的几种方法
May 05 #Python
Python中异常重试的解决方案详解
May 05 #Python
Django的信号机制详解
May 05 #Python
Python中模块与包有相同名字的处理方法
May 05 #Python
详解python 字符串和日期之间转换 StringAndDate
May 04 #Python
You might like
用PHP实现小型站点广告管理(修正版)
2006/10/09 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
php输出图像的方法实例分析
2017/02/16 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
Python新手学习标准库模块命名
2020/05/29 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
个人租房协议书样本
2014/10/01 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
故意杀人案辩护词
2015/05/21 职场文书
请客吃饭开场白
2015/06/01 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
Element实现动态表格的示例代码
2021/08/02 Javascript