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函数返回多个值的示例方法
Dec 04 Python
Python使用爬虫猜密码
Feb 19 Python
分析Python中解析构建数据知识
Jan 20 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
Django如何将URL映射到视图
Jul 29 Python
解决pyCharm中 module 调用失败的问题
Feb 12 Python
Python之关于类变量的两种赋值区别详解
Mar 12 Python
基于python实现破解滑动验证码过程解析
May 28 Python
Java多线程实现四种方式原理详解
Jun 02 Python
Python3爬虫里关于代理的设置总结
Jul 30 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 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 strcmp使用说明
2010/04/22 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
巧用canvas
2017/01/21 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
微信小程序实现留言板
2018/10/31 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
Python中的super()方法使用简介
2015/08/14 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
python基础练习之几个简单的游戏
2017/11/10 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
将python代码和注释分离的方法
2018/04/21 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
Python 获取项目根路径的代码
2019/09/27 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
华为的Java面试题
2014/03/07 面试题
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
大二自我鉴定范文
2013/10/05 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL