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 相关文章推荐
Python3基础之条件与循环控制实例解析
Aug 13 Python
python的类方法和静态方法
Dec 13 Python
初步解析Python中的yield函数的用法
Apr 03 Python
Python编程中time模块的一些关键用法解析
Jan 19 Python
深入理解Django中内置的用户认证
Oct 06 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
python2.7实现邮件发送功能
Dec 12 Python
详解python解压压缩包的五种方法
Jul 05 Python
python excel转换csv代码实例
Aug 26 Python
Python之指数与E记法的区别详解
Nov 21 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
Python lambda表达式原理及用法解析
Aug 18 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中构造函数和析构函数解析
2014/10/10 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
深入浅析python继承问题
2016/05/29 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
法国家具及室内配件店:home24
2017/01/21 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
兼职业务员岗位职责
2014/01/01 职场文书
酒店经理职责
2014/01/30 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python