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的常见命令注入威胁
Feb 18 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
python 容器总结整理
Apr 04 Python
Python程序员面试题 你必须提前准备!
Jan 16 Python
Python yield与实现方法代码分析
Feb 06 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
详解Python字典的操作
Mar 04 Python
python实现3D地图可视化
Mar 25 Python
Python中实现输入一个整数的案例
May 03 Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 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+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
Javascript !!的作用
2008/12/04 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
浅析Python 多行匹配模式
2020/07/24 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
生产工厂门卫岗位职责
2014/09/26 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
三方股东合作协议书
2014/10/28 职场文书
施工员岗位职责
2015/02/10 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
Go并发4种方法简明讲解
2022/04/06 Golang