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 相关文章推荐
django使用html模板减少代码代码解析
Dec 12 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
face++与python实现人脸识别签到(考勤)功能
Aug 28 Python
python 3.7.4 安装 opencv的教程
Oct 10 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
Python源码解析之List
May 21 Python
Python 统计序列中元素的出现频度
Apr 26 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木马webshell扫描器代码
2012/01/25 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
跟老齐学Python之用while来循环
2014/10/02 Python
python数据结构之图的实现方法
2015/07/08 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
python机器学习之神经网络实现
2018/10/13 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
感恩之星事迹材料
2014/05/03 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
合作与交流自我评价
2015/03/09 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
keepalived + nginx 实现高可用方案
2022/12/24 Servers