如何对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多线程实例教程
Sep 06 Python
python使用PyGame绘制图像并保存为图片文件的方法
Apr 24 Python
Python数据操作方法封装类实例
Jun 23 Python
Python实现的求解最小公倍数算法示例
May 03 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
Python图像处理之简单画板实现方法示例
Aug 30 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
opencv3/C++ 平面对象识别&透视变换方式
Dec 11 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
python else语句在循环中的运用详解
Jul 06 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
PHP面向对象编程快速入门
2006/10/09 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
Python中的作用域规则详解
2015/01/30 Python
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
pandas多级分组实现排序的方法
2018/04/20 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
django解决跨域请求的问题
2018/11/11 Python
python实现动态创建类的方法分析
2019/06/25 Python
python中shell执行知识点
2020/05/06 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
男女朋友协议书
2014/04/23 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
市场营销计划书
2019/04/24 职场文书
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android