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文档生成工具pydoc使用介绍
Jun 02 Python
Python爬虫抓取手机APP的传输数据
Jan 22 Python
Python中functools模块函数解析
Mar 12 Python
使用Python设计一个代码统计工具
Apr 04 Python
浅谈Python中的bs4基础
Oct 21 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
Python实现手势识别
Oct 21 Python
Numpy中的数组搜索中np.where方法详细介绍
Jan 08 Python
python用海龟绘图写贪吃蛇游戏
Jun 18 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向js函数传参的几种方法
2014/08/10 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
jQuery 入门讲解1
2009/04/15 Javascript
JQuery 风格的HTML文本转义
2009/07/01 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
JS实现可视化文件上传
2018/09/08 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
厂长助理岗位职责
2013/12/27 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
投资协议书范本
2014/04/21 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
电影建党伟业观后感
2015/06/01 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python