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 相关文章推荐
pygame学习笔记(5):游戏精灵
Apr 15 Python
python实现linux下使用xcopy的方法
Jun 28 Python
Python实现的科学计算器功能示例
Aug 04 Python
python 接收处理外带的参数方法
Dec 03 Python
python调用staf自动化框架的方法
Dec 26 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
python适合做数据挖掘吗
Jun 16 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
python里反向传播算法详解
Nov 22 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 Python
Python Socket编程详解
Apr 25 Python
python opencv通过按键采集图片源码
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
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
redux-saga 初识和使用
2018/03/10 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
flask应用部署到服务器的方法
2019/07/12 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
python的flask框架难学吗
2020/07/31 Python
Python进行统计建模
2020/08/10 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
社区活动策划方案
2014/08/21 职场文书
机关作风建设自查报告
2014/10/22 职场文书
综治维稳工作汇报
2014/10/27 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
会议主持词结束语
2015/07/03 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
比较node.js和Deno
2021/04/27 Javascript