如何对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冒泡排序简单实现方法
Jul 09 Python
Fiddler如何抓取手机APP数据包
Jan 22 Python
Golang与python线程详解及简单实例
Apr 27 Python
Python入门_学会创建并调用函数的方法
May 16 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
django 多数据库配置教程
May 30 Python
老生常谈python中的重载
Nov 11 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
Python类的继承用法示例
Jan 31 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 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实现邮件群发的源码
2013/06/18 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
php精度计算的问题解析
2019/06/21 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
为Python的web框架编写MVC配置来使其运行的教程
2015/04/30 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python之reload流程实例代码解析
2018/01/29 Python
Python中函数参数调用方式分析
2018/08/09 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
django model通过字典更新数据实例
2020/04/01 Python
线程同步的方法
2016/11/23 面试题
J2EE面试题大全
2016/08/06 面试题
销售文员岗位职责
2013/11/29 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
淘宝活动策划方案
2014/02/06 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
家庭困难证明
2014/10/12 职场文书
采购员岗位职责范本
2015/04/07 职场文书
城南旧事电影观后感
2015/06/16 职场文书