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中的类与对象之描述符详解
Mar 27 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
python下10个简单实例代码
Nov 15 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
Python内置模块ConfigParser实现配置读写功能的方法
Feb 12 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 Python
对python3新增的byte类型详解
Dec 04 Python
python numpy--数组的组合和分割实例
Feb 24 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
Python爬虫工具requests-html使用解析
Apr 29 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 Python
python scipy 稀疏矩阵的使用说明
May 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 GD 图像处理组件的常用函数总结
2010/04/28 PHP
php中取得文件的后缀名?
2012/02/20 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
用js重建星际争霸
2006/12/22 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
Python递归函数定义与用法示例
2017/06/02 Python
Python random模块用法解析及简单示例
2017/12/18 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
Python编写打字训练小程序
2019/09/26 Python
django 简单实现登录验证给你
2019/11/06 Python
django中cookiecutter的使用教程
2020/12/03 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
Java程序员面试90题
2013/10/19 面试题
学年自我鉴定范文
2013/10/01 职场文书
工作决心书范文
2014/03/11 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
法人授权委托书样本
2014/09/19 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python