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中Django框架下的staticfiles使用简介
May 30 Python
Python 专题三 字符串的基础知识
Mar 19 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
Python应用库大全总结
May 30 Python
python中cPickle类使用方法详解
Aug 27 Python
Python3解释器知识点总结
Feb 19 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
May 19 Python
Python enumerate() 函数如何实现索引功能
Jun 29 Python
Python使用socket_TCP实现小文件下载功能
Oct 09 Python
浅谈怎么给Python添加类型标注
Jun 08 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 GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
用python生成1000个txt文件的方法
2018/10/25 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
python如何操作mysql
2020/08/17 Python
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
2014年五一促销活动方案
2014/03/09 职场文书
班级年度安全计划书
2014/05/01 职场文书
运动会口号8字
2014/06/07 职场文书
与美同行演讲稿
2014/09/13 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
单位租房协议书范本
2014/12/04 职场文书
清洁员岗位职责
2015/02/15 职场文书
员工离职证明范本
2015/06/12 职场文书
导游词之镜泊湖
2019/12/09 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python