Python OrderedDict字典排序方法详解


Posted in Python onMay 21, 2020

很多人认为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学习笔记_数据排序方法
May 22 Python
用Python的pandas框架操作Excel文件中的数据教程
Mar 31 Python
Python实现的简单dns查询功能示例
May 24 Python
python实现报表自动化详解
Nov 16 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
python3 http提交json参数并获取返回值的方法
Dec 19 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 Python
django中嵌套的try-except实例
May 21 #Python
Spark处理数据排序问题如何避免OOM
May 21 #Python
Django 解决开发自定义抛出异常的问题
May 21 #Python
Python logging模块写入中文出现乱码
May 21 #Python
django的403/404/500错误自定义页面的配置方式
May 21 #Python
python 3.8.3 安装配置图文教程
May 21 #Python
Python中的xlrd模块使用原理解析
May 21 #Python
You might like
PHP 第一节 php简介
2012/04/28 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
理解JavaScript原型链
2016/10/25 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
Angularjs单选框相关的示例代码
2017/08/17 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
什么是Python包的循环导入
2020/09/08 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
自荐信要包含哪些内容
2013/11/06 职场文书
元旦促销方案
2014/03/15 职场文书
车间安全生产标语
2014/06/06 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python