如何对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素数检测的方法
May 11 Python
浅谈python对象数据的读写权限
Sep 12 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
对Python中type打开文件的方式介绍
Apr 28 Python
python调用Matplotlib绘制分布点并且添加标签
May 31 Python
Django中使用Celery的方法示例
Nov 29 Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 Python
python基于Selenium的web自动化框架
Jul 14 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
Python中实现输入一个整数的案例
May 03 Python
用Python的绘图库(matplotlib)绘制小波能量谱
Apr 17 Python
python实现Thrift服务端的方法
Apr 20 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
10 个经典PHP函数
2013/10/17 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
详解webpack 多页面/入口支持&公共组件单独打包
2017/06/29 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
python输出带颜色字体实例方法
2019/09/01 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS