如何对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 相关文章推荐
Python3中多线程编程的队列运作示例
Apr 16 Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
在Python中操作文件之seek()方法的使用教程
May 24 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
Python yield 使用方法浅析
May 20 Python
tensorflow实现KNN识别MNIST
Mar 12 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
Python绘制热力图示例
Sep 27 Python
python读取ini配置的类封装代码实例
Jan 08 Python
django 利用Q对象与F对象进行查询的实现
May 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
大家未必知道的Js技巧收藏
2008/04/07 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python中使用enumerate函数遍历元素实例
2014/06/16 Python
python分析网页上所有超链接的方法
2015/05/08 Python
让python在hadoop上跑起来
2016/01/27 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
dpn网络的pytorch实现方式
2020/01/14 Python
python实现文字版扫雷
2020/04/24 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
python中time、datetime模块的使用
2020/12/14 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
开放系统互连参考模型
2016/06/29 面试题
父亲八十大寿答谢词
2014/01/23 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
2014年团队工作总结
2014/11/24 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
个园导游词
2015/02/04 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
小学数学国培研修日志
2015/11/13 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS