如何对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实现网页链接提取的方法分享
Feb 25 Python
Python 多线程抓取图片效率对比
Feb 27 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
深入理解Python中的内置常量
May 20 Python
pandas 小数位数 精度的处理方法
Jun 09 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
Django中的AutoField字段使用
May 18 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 Python
Python关于拓扑排序知识点讲解
Jan 04 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
PHP4在Windows2000下的安装
2006/10/09 PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP的开发框架的现状和展望
2007/03/16 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
js不是基础的基础
2006/12/24 Javascript
CCPry JS类库 代码
2009/10/30 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
理解javascript正则表达式
2016/03/08 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
Python地图绘制实操详解
2019/03/04 Python
python将字符串转换成json的方法小结
2019/07/09 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
前台接待岗位职责
2013/12/03 职场文书
合同纠纷调解书
2015/05/20 职场文书
学生会自荐信
2019/05/16 职场文书
创业计划书之美甲店
2019/09/20 职场文书
java设计模式--原型模式详解
2021/07/21 Java/Android