如何对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中__init__和__new__的区别详解
Jul 09 Python
SVM基本概念及Python实现代码
Dec 27 Python
python 接口返回的json字符串实例
Mar 27 Python
对Python 内建函数和保留字详解
Oct 15 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
python thrift 实现 单端口多服务的过程
Jun 08 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
pandas 操作 Excel操作总结
Mar 31 Python
利用Python判断你的密码难度等级
Jun 02 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&MYSQL分页原理及实现
2007/01/02 PHP
php 远程关机操作的代码
2008/12/05 PHP
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
javascript整除实现代码
2010/11/23 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
javascript实现简易计算器
2017/02/01 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
详解React 元素渲染
2020/07/07 Javascript
python实现线程池的方法
2015/06/30 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
python爬取微博评论的实例讲解
2021/01/15 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
2014年高三毕业生自我评价
2014/01/11 职场文书
简历里的自我评价
2014/01/31 职场文书
语文教学感言
2014/02/06 职场文书
领导干部考察材料
2014/02/08 职场文书
写给老师的感谢信
2015/01/20 职场文书
会计稽核岗位职责
2015/04/13 职场文书
校运会广播稿
2015/08/19 职场文书