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数据的一个简单例子
Apr 17 Python
python中的五种异常处理机制介绍
Sep 02 Python
浅谈Python 字符串格式化输出(format/printf)
Jul 21 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
python 获取当天凌晨零点的时间戳方法
May 22 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
python爬虫添加请求头代码实例
Dec 28 Python
python 串行执行和并行执行实例
Apr 30 Python
Python 高效编程技巧分享
Sep 10 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
Mar 03 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
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
Vue渲染函数详解
2017/09/15 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
Python的Django框架使用入门指引
2015/04/15 Python
九步学会Python装饰器
2015/05/09 Python
使用tensorflow实现AlexNet
2017/11/20 Python
python实现微信远程控制电脑
2018/02/22 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
python 三元运算符使用解析
2019/09/16 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
python 简单的调用有道翻译
2020/11/25 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
大学生就业自荐书
2014/06/16 职场文书
2014会计年终工作总结
2014/12/20 职场文书
少先队中队工作总结
2015/08/14 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Python数据类型最全知识总结
2021/05/31 Python