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实现斐波那契数列的方法示例
Jan 12 Python
Python基础教程之利用期物处理并发
Mar 29 Python
Python不使用int()函数把字符串转换为数字的方法
Jul 09 Python
Python3.5面向对象程序设计之类的继承和多态详解
Apr 24 Python
python多线程并发及测试框架案例
Oct 15 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
Feb 06 Python
基于python实现可视化生成二维码工具
Jul 08 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
python实现进度条的多种实现
Apr 29 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
thinkphp多层MVC用法分析
2015/12/30 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
js验证表单第二部分
2006/11/25 Javascript
网页设计常用的一些技巧
2006/12/22 Javascript
javascript for循环设法提高性能
2010/02/24 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
vant 中van-list的用法说明
2020/11/11 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
Python BS4库的安装与使用详解
2018/08/08 Python
python实现求特征选择的信息增益
2018/12/18 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
梅西百货官网:Macy’s
2020/08/04 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
司机岗位职责
2013/11/15 职场文书
会计应聘求职信范文
2013/12/17 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
社区综治工作汇报
2014/10/27 职场文书
给学校的建议书400字
2015/09/14 职场文书
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python