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排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
flask框架视图函数用法示例
Jul 19 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
启动Atom并运行python文件的步骤
Nov 09 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
python实现图片横向和纵向拼接
Mar 05 Python
Django中ORM找出内容不为空的数据实例
May 20 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Python语言描述随机梯度下降法
2018/01/04 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
python面试题之列表声明实例分析
2019/07/08 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
帕克纽约:PARKER NY
2018/12/09 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
英文简历自荐信范文
2013/12/11 职场文书
个人授权委托书范本
2014/09/14 职场文书
银行转正自我鉴定
2014/09/29 职场文书
销售员岗位职责范本
2015/04/11 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书