如何对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的正则表达式re模块的常用方法
Mar 09 Python
python在命令行下使用google翻译(带语音)
Jan 16 Python
Python生成pdf文件的方法
Aug 04 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
详解Python中的文件操作
Aug 28 Python
利用Python暴力破解zip文件口令的方法详解
Dec 21 Python
Python多层装饰器用法实例分析
Feb 09 Python
python爬虫基本知识
Mar 05 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
python实现简易数码时钟
Feb 19 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
解决Keras中CNN输入维度报错问题
Jun 29 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
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
php中文字符截取防乱码
2008/03/28 PHP
PHP 多维数组排序实现代码
2009/08/05 PHP
php旋转图片90度的方法
2013/11/07 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
Python操作MySQL模拟银行转账
2018/03/12 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
django admin组件使用方法详解
2019/07/19 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
python批量处理文件或文件夹
2020/07/28 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
通过自学python能找到工作吗
2020/06/21 Python
python SOCKET编程基础入门
2021/02/27 Python
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
医护人员英文求职信范文
2013/11/26 职场文书
合作协议书怎么写
2014/04/18 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle