如何对python的字典进行排序


Posted in Python onJune 19, 2020

我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。到底有多少种方法可以实现对dictionary的内容进行排序输出呢?下面摘取了 一些精彩的解决办法。

python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数。

sort函数和sorted函数唯一的不同是,sort是在容器内(in-place)排序,sorted生成一个新的排好序的容器。

1 按照Key值排序

#最简单的方法,这个是按照key值排序: 
def sortedDictValues1(adict): 
items = adict.items() 
items.sort() 
return [value for key, value in items] 
 
#又一个按照key值排序,貌似比上一个速度要快点 
def sortedDictValues2(adict): 
keys = adict.keys() 
keys.sort() 
return [dict[key] for key in keys] 
 
#还是按key值排序,据说更快。。。而且当key为tuple的时候照样适用 
def sortedDictValues3(adict): 
keys = adict.keys() 
keys.sort() 
return map(adict.get, keys) 
 
#一行语句搞定: 
[(k,di[k]) for k in sorted(di.keys())] 
 
#用sorted函数的key参数(func)排序: 
#按照key进行排序 
print sorted(dict1.items(), key=lambda d: d[0])

2 按照value值排序

#来一个根据value排序的,先把item的key和value交换位置放入一个list中,再根据list每个元素的第一个值,即原来的value值,
排序: 
def sort_by_value(d): 
items=d.items() 
backitems=[[v[1],v[0]] for v in items] 
backitems.sort() 
return [ backitems[i][1] for i in range(0,len(backitems))] 
 
#还是一行搞定: 
[ v for v in sorted(di.values())] 
 
#用lambda表达式来排序,更灵活: 
sorted(d.items(), lambda x, y: cmp(x[1], y[1])), 或反序: 
sorted(d.items(), lambda x, y: cmp(x[1], y[1]), reverse=True) 
 
#用sorted函数的key参数(func)排序: # 按照value进行排序 
print sorted(dict1.items(), key=lambda d: d[1])

知识点扩展:

准备知识:

在python里,字典dictionary是内置的数据类型,是个无序的存储结构,每一元素是key-value对:

如:dict = {'username':'password','database':'master'},其中'username'和'database'是key,而'password'和'master'是value,可以通过d[key]获得对应值value的引用,但是不能通过value得到key。

对于dictionnary,需知道以下几点注意事项:

a、 dictionary 的 key 是大小写敏感的;

b、 一个dictionary中不能有重复的 key;

c、 dictionary是无序的,没有元素顺序的概念,它们只是序偶的简单排列。

到此这篇关于如何对python的字典进行排序的文章就介绍到这了,更多相关python的字典进行排序方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
python使用pdfminer解析pdf文件的方法示例
Dec 20 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
Python面向对象原理与基础语法详解
Jan 02 Python
使用python求解二次规划的问题
Feb 29 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
python中wx模块的具体使用方法
May 15 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 Python
浅谈Python中的继承
Jun 19 #Python
python程序需要编译吗
Jun 19 #Python
python中round函数如何使用
Jun 19 #Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 #Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 #Python
python中怎么表示空值
Jun 19 #Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 #Python
You might like
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
Python的Django框架中的Context使用
2015/07/15 Python
学习python 之编写简单乘法运算题
2016/02/27 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
工程管理专业个人求职信范文
2013/12/07 职场文书
数学国培研修感言
2014/02/13 职场文书
班级文化标语
2014/06/23 职场文书
煤矿安全保证书
2015/02/27 职场文书
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python