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使用正则搜索字符串或文件中的浮点数代码实例
Jul 11 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
python如何读写csv数据
Mar 21 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
python TCP包注入方式
May 05 Python
基于python实现把json数据转换成Excel表格
May 07 Python
在django中form的label和verbose name的区别说明
May 20 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
python 匿名函数与三元运算学习笔记
Oct 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基础学习笔记
2007/03/18 PHP
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
jquery禁用右键示例
2014/04/28 Javascript
jquery常用操作小结
2014/07/21 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
js实现小时钟效果
2020/03/25 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
Python函数式编程
2017/07/20 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
某公司面试题
2012/03/05 面试题
学习雷锋精神演讲稿
2014/05/10 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
Python图像处理之图像拼接
2021/04/28 Python
go语言基础 seek光标位置os包的使用
2021/05/09 Golang