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中的列表推导浅析
Apr 26 Python
Python制作数据导入导出工具
Jul 31 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
python list元素为tuple时的排序方法
Apr 18 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
python opencv调用笔记本摄像头
Aug 28 Python
python获取Linux发行版名称
Aug 30 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
Django高并发负载均衡实现原理详解
Apr 04 Python
Python读取Excel数据并生成图表过程解析
Jun 18 Python
Python标准库pathlib操作目录和文件
Nov 20 Python
python前后端自定义分页器
Apr 13 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
jquery select操作的日期联动实现代码
2009/12/06 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
python编程实现12306的一个小爬虫实例
2017/12/27 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
新闻专业个人自我评价
2013/09/21 职场文书
生产经理的自我评价分享
2013/11/07 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
离职信范文
2015/06/23 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android