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 13 Python
Python的Django框架中if标签的相关使用
Jul 15 Python
tensorflow训练中出现nan问题的解决
Feb 10 Python
对python添加模块路径的三种方法总结
Oct 16 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
Python二元赋值实用技巧解析
Oct 25 Python
Python输出指定字符串的方法
Feb 06 Python
Django-migrate报错问题解决方案
Apr 21 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
python中sys模块的介绍与实例
Apr 17 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
德生PL660的电路分析和打磨
2021/03/02 无线电
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
Symfony核心类概述
2016/03/17 PHP
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
详解node中创建服务进程
2017/05/09 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
python同时给两个收件人发送邮件的方法
2015/04/30 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
Python中datetime常用时间处理方法
2015/06/15 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Django缓存Cache使用详解
2020/11/30 Python
制药工程专业应届生求职信
2013/09/24 职场文书
区三好学生主要事迹
2014/01/30 职场文书
简单的项目建议书模板
2014/03/12 职场文书
法制宣传日活动总结
2014/04/29 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
找工作求职信
2014/07/07 职场文书
课程设计的心得体会
2014/09/03 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL