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内置函数bin() oct()等实现进制转换
Dec 30 Python
python中requests模块的使用方法
Apr 08 Python
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
使用C++扩展Python的功能详解
Jan 12 Python
python图像处理入门(一)
Apr 04 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
python和php学习哪个更有发展
Jun 17 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
python 简单的调用有道翻译
Nov 25 Python
Python如何使用循环结构和分支结构
Apr 13 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语法(3)
2006/10/09 PHP
php判断字符以及字符串的包含方法属性
2008/08/30 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
DOM基础教程之使用DOM
2015/01/19 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
Python collections模块实例讲解
2014/04/07 Python
Python实现把回车符\r\n转换成\n
2015/04/23 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
四风问题查摆剖析材料
2014/10/11 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server