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列表推导式的使用方法
Nov 21 Python
跟老齐学Python之眼花缭乱的运算符
Sep 14 Python
初步理解Python进程的信号通讯
Apr 09 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
Python模拟用户登录验证
Sep 11 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
python matplotlib库直方图绘制详解
Aug 10 Python
python实现复制文件到指定目录
Oct 16 Python
Python之Class&Object用法详解
Dec 25 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
Tensorflow分批量读取数据教程
Feb 07 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 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初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
php中异常处理方法小结
2015/01/09 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
详解vue-cli3使用
2018/08/14 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
python中实现php的var_dump函数功能
2015/01/21 Python
详解Python中的正则表达式的用法
2015/04/09 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
澳大利亚最便宜的网上药房:Chemist Warehouse
2020/01/30 全球购物
C#中的验证控件有几种
2014/03/08 面试题
经典导游欢迎词大全
2014/01/16 职场文书
接受捐赠答谢词
2014/01/27 职场文书
大学校园活动策划书
2014/02/04 职场文书
终止劳动合同协议书
2014/04/14 职场文书
党员承诺书范文
2014/05/19 职场文书
办公室岗位职责范本
2015/04/11 职场文书
活动主持人开场白
2015/05/28 职场文书
高中英语教学反思范文
2016/03/02 职场文书