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中apply函数的用法实例教程
Jul 31 Python
快速入手Python字符编码
Aug 03 Python
Python分析学校四六级过关情况
Nov 22 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
Dec 12 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
May 20 Python
Django用内置方法实现简单搜索功能的方法
Dec 18 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
Python爬虫基础之爬虫的分类知识总结
May 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
删除无限级目录与文件代码共享
2006/07/12 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
python的Template使用指南
2014/09/11 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
对python模块中多个类的用法详解
2019/01/10 Python
python 公共方法汇总解析
2019/09/16 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
Django数据库迁移常见使用方法
2020/11/12 Python
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
韩国现代百货官网:Hmall
2018/03/21 全球购物
实习单位接收函
2014/01/11 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
商场租赁意向书
2014/07/30 职场文书
2015年外联部工作总结
2015/04/03 职场文书
立项申请报告范本
2015/05/15 职场文书
教师读书活动心得体会
2016/01/14 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
Python学习之异常中的finally使用详解
2022/03/16 Python
一条 SQL 语句执行过程
2022/03/17 MySQL