如何对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 splitlines使用技巧
Sep 06 Python
Python中用Spark模块的使用教程
Apr 13 Python
Python全局变量操作详解
Apr 14 Python
Python中的random()方法的使用介绍
May 15 Python
Python实现图片转字符画的示例代码
Aug 21 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
python 实现一个贴吧图片爬虫的示例
Oct 12 Python
python实现Windows电脑定时关机
Jun 20 Python
Python3内置模块random随机方法小结
Jul 13 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
基于Python实现天天酷跑功能
Jan 06 Python
超级详细实用的pycharm常用快捷键
May 12 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
关于页面优化和伪静态
2009/10/11 PHP
php下载文件的代码示例
2012/06/29 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
PHP设置进度条的方法
2015/07/08 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
2015/11/17 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
jupyter安装小结
2016/03/13 Python
利用Python破解斗地主残局详解
2017/06/30 Python
使用django实现一个代码发布系统
2019/07/18 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
教师年终个人自我评价
2013/10/04 职场文书
管理站站长岗位职责
2013/11/27 职场文书
节约电力资源的建议书
2014/03/12 职场文书
学生操行评语大全
2014/04/24 职场文书
班主任远程培训研修日志
2015/11/13 职场文书