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中的True,False条件判断实例分析
Jan 12 Python
python将字符串转换成数组的方法
Apr 29 Python
收藏整理的一些Python常用方法和技巧
May 18 Python
Python中exit、return、sys.exit()等使用实例和区别
May 28 Python
python下如何查询CS反恐精英的服务器信息
Jan 17 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
python爬取m3u8连接的视频
Feb 28 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
Dec 05 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
python speech模块的使用方法
Sep 09 Python
使用Pytorch训练two-head网络的操作
May 28 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扩展模块memcached长连接使用方法分析
2014/12/24 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
PHP重载基础知识回顾
2020/09/10 PHP
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
前端微信支付js代码
2016/07/25 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
解决python3 json数据包含中文的读写问题
2018/05/10 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
外贸公司实习自我鉴定
2013/09/24 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书
安全先进个人材料
2014/12/29 职场文书
销售员岗位职责
2015/02/10 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏