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的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
Python中处理字符串之islower()方法的使用简介
May 19 Python
Python实现定时精度可调节的定时器
Apr 15 Python
python中virtualenvwrapper安装与使用
May 20 Python
python 定义给定初值或长度的list方法
Jun 23 Python
python分布式计算dispy的使用详解
Dec 22 Python
对tensorflow中cifar-10文档的Read操作详解
Feb 10 Python
python如何实现复制目录到指定目录
Feb 13 Python
Python类和实例的属性机制原理详解
Mar 21 Python
python访问hdfs的操作
Jun 06 Python
python能做哪方面的工作
Jun 15 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 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截断函数mb_substr()使用介绍
2013/04/22 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
php数据库备份还原类分享
2014/03/20 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
最实用的JS数组函数整理
2017/12/05 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
细说CSS3中的选择符
2008/10/17 HTML / CSS
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
食堂标语大全
2014/06/11 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
辞职信怎么写?
2019/05/21 职场文书
vue实力踩坑之push当前页无效
2022/04/10 Vue.js