python sorted排序小结
转载至:
https://blog.csdn.net/ray_up/article/details/42084863
在python中排序有两个专用函数,一个是sort,另一个sorted。其中sort是列表专用排序函数,sorted是所有可迭代对象都能使用的排序函数。
列表排序
按照字母排序
a = ['USA', 'China', 'Canada', 'Russia']
a.sort(reverse=True)
结果:
['USA', 'Russia', 'China', 'Canada']
嵌套列表的排序, 按照子列表的其他值排序, 修改x[0] 这里的下标即可
a = [['USA', 'b'], ['China', 'c'], ['Canada', 'd'], ['Russia', 'a']]
a.sort(key=lambda x: x[0], reverse=True)
结果:
[['USA', 'b'], ['Russia', 'a'], ['China', 'c'], ['Canada', 'd']]
嵌套字典, 按照字典值(value) 排序
a = [{'letter': 'b'}, {'letter': 'c'}, {'letter': 'd'}, {'letter': 'a'}]
a.sort(key=lambda x: x['letter'], reverse=True)
结果:
[{'letter': 'd'}, {'letter': 'c'}, {'letter': 'b'}, {'letter': 'a'}]
当字典值也是字典时, 这时候会优先按照键名排序, 再按照键值排序. 例子如下
a = [{'letter': {'a': 'b'}}, {'letter': {'a': 'c'}}, {'letter': {'a': 'd'}}, {'letter': {'a': 'a'}}]
a.sort(key=lambda x: x['letter'], reverse=True)
结果:
[{'letter': {'a': 'd'}}, {'letter': {'a': 'c'}}, {'letter': {'a': 'b'}}, {'letter': {'a': 'a'}}]
和
a = [{'letter': {'a': 'b'}}, {'letter': {'b': 'c'}}, {'letter': {'c': 'd'}}, {'letter': {'d': 'a'}}]
a.sort(key=lambda x: x['letter'], reverse=True)
结果:
[{'letter': {'d': 'a'}}, {'letter': {'c': 'd'}}, {'letter': {'b': 'c'}}, {'letter': {'a': 'b'}}]
字典排序
解析: 字典排序可以有多种方法,直接对字典排序会变成对key排序,也可以将字典转化成元祖排序。
使用字典直接排序
直接使用sorted对字典排序,所排序的是字典的key,输出也是排序好的key值。
a = {'a': 'China', 'c': 'USA', 'b': 'Russia', 'd': 'Canada'}
b = sorted(a, reverse=True)
结果:
['a', 'b', 'c', 'd']
按照键值(value)排序
将字典转化成元祖排序。排序函数中传入的是a.items(),即元祖
a = {'a': 'China', 'c': 'USA', 'b': 'Russia', 'd': 'Canada'}
b = sorted(a.items(), key=lambda x: x[1], reverse=True)
结果:
[('d', 'Canada'), ('a', 'China'), ('b', 'Russia'), ('c', 'USA')]
按照键名(key)排序
a = {'a': 'China', 'c': 'USA', 'b': 'Russia', 'd': 'Canada'}
b = sorted(a.items(), key=lambda x: x[0])
结果:
[('d', 'Canada'), ('c', 'USA'), ('b', 'Russia'), ('a', 'China')]
嵌套字典, 按照字典键名(key)排序
a = {'a': {'b': 'China'}, 'c': {'d': 'USA'}, 'b': {'c': 'Russia'}, 'd': {'a': 'Canada'}}
b = sorted(a.items(), key=lambda x: x[1])
结果:
[('d', {'a': 'Canada'}), ('a', {'b': 'China'}), ('b', {'c': 'Russia'}), ('c', {'d': 'USA'})]
嵌套列表, 针对列表第一个元素排序( 其实直接写 x: x[1] 就是按照第一个值排序. )
a = {'a': [1, 3], 'c': [3, 4], 'b': [0, 2], 'd': [2, 1]}
b = sorted(a.items(), key=lambda x: x[1][0])
结果:
[('b', [0, 2]), ('a', [1, 3]), ('d', [2, 1]), ('c', [3, 4])]
嵌套列表, 按照列表其他元素排序 只需要修改列表对应的下标
a = {'a': [1, 3], 'c': [3, 4], 'b': [0, 2], 'd': [2, 1]}
b = sorted(a.items(), key=lambda x: x[1][1])
结果:
[('d', [2, 1]), ('b', [0, 2]), ('a', [1, 3]), ('c', [3, 4])]
总结: 此处使用lambda方法, x: x[1][1] 就可以看做是在访问字典的值, 想要按照哪个数值排序, 用相应的坐标对应即可, 但当字典过于复杂后, 应该选择用元组存储, 简化排序过程.
python sorted排序小结的更多相关文章
- python sorted排序
python sorted排序 Python不仅提供了list.sort()方法来实现列表的排序,而且提供了内建sorted()函数来实现对复杂列表的排序以及按照字典的key和value进行排序. s ...
- python sorted排序用法详解
sorted排序 python sorted 排序 1. operator函数在介绍sorted函数之前需要了解一下operator函数. operator函数是python的内置函数,提供了一系列常 ...
- python 字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- <转>python字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- Python 列表排序方法reverse、sort、sorted操作方法
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...
- python高阶函数——sorted排序算法
python 内置的sorted()函数可以对一个list进行排序: >>> sorted([8,3,8,11,-2]) [-2, 3, 8, 8, 11] 既然说是高阶函数,那么它 ...
- python之排序(sort/sorted)
大家都知道,python排序有内置的排序函数 sort() 和 高阶函数sorted() .但是它们有什么区别呢? 让我们先从这个函数的定义说起: sorted():该函数第一个参数iterable为 ...
- python的sorted排序具体解释
排序.在编程中常常遇到的算法.我也在几篇文章中介绍了一些关于排序的算法. 有的高级语言内置了一些排序函数.本文讲述Python在这方面的工作.供使用python的程序猿们參考,也让没有使用python ...
- Python中自定义类未定义__lt__方法使用sort/sorted排序会怎么处理?
在<第8.23节 Python中使用sort/sorted排序与"富比较"方法的关系分析>中介绍了排序方法sort和函数sorted在没有提供key参数的情况下默认调用 ...
- python中的sort、sorted排序
我们通常会遇到对数据库中的数据进行排序的问题,今天学习一下对列表和字典的排序方法. 列表 第一种:内建方法sort sort()对列表排序是永久性的排序. 用法:sort(*, key=None, r ...
随机推荐
- Git文件权限与filemode配置方法
一.问题 Clion是一个跨平台的IDE,今天将工程运行在Ubuntu下,在Git提交时发现有很多文件显示被更改,但是文件内容却是相同的. 二.Git 规则 Git对文件访问权限的管理与配置选项cor ...
- Util应用框架基础(六) - 日志记录(一) - 正文
本文介绍Util应用框架如何记录日志. 日志记录共分4篇,本文是正文,后续还有3篇分别介绍写入不同日志接收器的安装和配置方法. 概述 日志记录对于了解系统执行情况非常重要. Asp.Net Core ...
- Java Junit单元测试(入门必看篇)
Hi i,m JinXiang 前言 本篇文章主要介绍单元测试工具Junit使用以及部分理论知识 欢迎点赞 收藏 留言评论 私信必回哟 博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言 ...
- matlab实现频谱感知-认知无线电
1.前言 \(\quad\) 频谱感知的方法有很多,比如匹配滤波探测,能量检测,静态循环特征探测等方法,然后最近因为在用硬件做能量检测,所以本文主要是说了如何用matlab实现能量检测,它的大概流程就 ...
- OpenSSL 使用AES对文件加解密
AES(Advanced Encryption Standard)是一种对称加密算法,它是目前广泛使用的加密算法之一.AES算法是由美国国家标准与技术研究院(NIST)于2001年发布的,它取代了原先 ...
- uni-app学习笔记——路由与页面跳转
小颖最近在学习小程序,怕自己前看后忘,毕竟还没开始进入项目实践中,就自己瞎倒腾嘻嘻,今天来看下 uni-app 的路由与页面跳转,小颖就简单列举下它们的用法,具体的大家可以看官网哦!啦啦啦啦啦 ...
- 方法覆盖Override
继承作用: 基本作用:代码复用 重要作用:方法覆盖和多态机制 ===================================================================== ...
- 洛谷4055 [JSOI2009]游戏(二分图博弈)
例题:在N×M的迷宫中有一个棋子,小 AA 首先任意选择棋子放置的位置.然后,小 YY 和小 AA 轮流将棋子移动到相邻的格子里.游戏的规则规定,在一次游戏中,同一个格子不能进入两次,且不能将棋子移动 ...
- [QOJ4815] Flower's Land
简要题意:给出一个 \(n\) 个点的树,对某个点 \(i\) 求包含某一个点的大小为 \(k\) 的权值最大的连通块,一个连通块的权值是其所有点的权值之和. \(n\le 40000,k\le \m ...
- 数字孪生系统如何整合CesiumJS?整合后会产生怎样的化学反应?
数字孪生有关的项目中,智慧城市一直是一个比较重要的类型,但是这类智慧城市项目往往包含了大量的GIS相关数据,例如倾斜摄影.DEM.DOM.地形数据等.这时,将GIS系统融合进数字孪生系统的需求就出现了 ...