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编程中用close()方法关闭文件的教程
May 24 Python
python中logging库的使用总结
Oct 18 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
python redis 删除key脚本的实例
Feb 19 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 Python
python-web根据元素属性进行定位的方法
Dec 13 Python
python如何使用socketserver模块实现并发聊天
Dec 14 Python
如何基于Python实现自动扫雷
Jan 06 Python
Django单元测试中Fixtures的使用方法
Feb 26 Python
Python网络爬虫信息提取mooc代码实例
Mar 06 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
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
javascript判断复选框是否选中的方法
2015/10/16 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
js实现简单的倒计时
2021/01/28 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
python统计一个文本中重复行数的方法
2014/11/19 Python
Python中super()函数简介及用法分享
2016/07/11 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
简历中自我评价怎么写
2014/02/12 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript