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练习程序批量修改文件名
Jan 16 Python
Python模拟百度登录实例详解
Jan 20 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
python使用matplotlib绘制热图
Nov 07 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
在python里创建一个任务(Task)实例
Apr 25 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
让文件路径提取变得更简单的Python Path库
May 27 Python
Python之基础函数案例详解
Aug 30 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实现维护文件代码
2007/06/14 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
python通过floor函数舍弃小数位的方法
2015/03/17 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python进阶篇之字典操作总结
2016/11/16 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
python实现定时提取实时日志程序
2018/06/22 Python
解读python如何实现决策树算法
2018/10/11 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
谈谈python垃圾回收机制
2020/09/27 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
2014年销售员工作总结
2014/12/01 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
会计求职简历自我评价
2015/03/10 职场文书