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 16 Python
Pyhton中防止SQL注入的方法
Feb 05 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
详解Python中的文件操作
Aug 28 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
python爬虫 2019中国好声音评论爬取过程解析
Aug 26 Python
利用Python优雅的登录校园网
Oct 21 Python
python 模拟登录B站的示例代码
Dec 15 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 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扩展CURL的用法详解
2014/06/20 PHP
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
PHP-Java-Bridge使用笔记
2014/09/22 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
基于node.js的快速开发透明代理
2010/12/25 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
python学生管理系统
2019/01/30 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
Python之指数与E记法的区别详解
2019/11/21 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
python global和nonlocal用法解析
2020/02/03 Python
Python如何将函数值赋给变量
2020/04/28 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
档案接收函
2014/01/13 职场文书
租车协议书
2015/01/27 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS