Python使用sorted对字典的key或value排序


Posted in Python onNovember 15, 2018

sorted函数

sorted(iterable,key,reverse)

  • iterable 待排序的可迭代对象
  • key 对应的是个函数, 该函数用来决定选取用哪些值来进行排序
  • reverse 反转排序

对key排序

d: dict = {"p": 59, "o": 9, "s": 5, "a": 20, "z": 18}

li: list = sorted(d.keys())
print(li)

执行结果:

['a', 'o', 'p', 's', 'z']

对value排序

在对value之前, 先来回炉一下Python的lambda表达式 

f = lambda x: x+1
print(f(5))

def ff(x):
 return x+1
print(ff(5))

执行结果:

6
6

以上两种方式是等价的, lambda表达式写法更简洁, 一般当做匿名表达式/匿名函数使用

lambda x:y

  • x 为入参
  • y 为计算表达式, 运算后返回

接下来进入到对字典的value排序正题, 这里就需要使用到lambda表达式

直接对值排序

d: dict = {"p": 59, "o": 9, "s": 5, "a": 20, "z": 18}

li: list = sorted(d.values())
print(li)

执行结果:

[5, 9, 18, 20, 59]

在包含Key的情况下对值排序

d: dict = {"p": 59, "o": 9, "s": 5, "a": 20, "z": 18}

li: list = sorted(d.items(), key=lambda x: x[1])
print(li)

执行结果:

[('s', 5), ('o', 9), ('z', 18), ('a', 20), ('p', 59)]

d.items() 返回以元组形式构成的列表 dict_items([('p', 59), ('o', 9), ('s', 5), ('a', 20), ('z', 18)]) (列表为可迭代对象)

lambda x: x[1] lambda表达式中, x为入参, 每次x的值为一个d.items()中的元素(一个元组), 第一个入参为('p', 59) 冒号后面的x[1]是运算表达式, 意思是取元组中的第二个元素返回(索引为1), 返回的元素即为排序的依据. 所以如果需要对key进行排序, 也可以在表达式里写 x[0]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
利用Python开发实现简单的记事本
Nov 15 Python
Python代码缩进和测试模块示例详解
May 07 Python
mac安装scrapy并创建项目的实例讲解
Jun 13 Python
python3 kmp 字符串匹配的方法
Jul 07 Python
python实现随机梯度下降法
Mar 24 Python
python3中eval函数用法使用简介
Aug 02 Python
Pandas 缺失数据处理的实现
Nov 04 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
PYcharm 激活方法(推荐)
Mar 23 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
python基础之爬虫入门
May 10 Python
python并发和异步编程实例
Nov 15 #Python
Numpy截取指定范围内的数据方法
Nov 14 #Python
python numpy元素的区间查找方法
Nov 14 #Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 #Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 #Python
python 顺时针打印矩阵的超简洁代码
Nov 14 #Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 #Python
You might like
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
python实现Decorator模式实例代码
2018/02/09 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
Python文件路径名的操作方法
2019/10/30 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
Python 如何创建一个线程池
2020/07/28 Python
python pip如何手动安装二进制包
2020/09/30 Python
Eclipse面试题
2014/03/22 面试题
创建服务型党组织实施方案
2014/02/25 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
Win11 BitLocker 驱动器加密
2022/04/19 数码科技