Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python_字典列表嵌套的排序问题

python_字典列表嵌套的排序问题

作者头像
钢铁知识库
发布于 2022-08-20 01:05:05
发布于 2022-08-20 01:05:05
4K00
代码可运行
举报
文章被收录于专栏:python爬虫教程python爬虫教程
运行总次数:0
代码可运行

上一篇我们聊到python 字典和列表嵌套用法,这次我们聊聊字典和列表嵌套中的排序问题,这个在python基础中不会提到,但实际经常运用,面试中也喜欢问,我们娓娓道来。

在说组合排序之前,先来看看排序有哪些函数。

排序函数

使用排序有两个可用方法,分别是sort()sorted()

  • sort():内置方法,会改变原来列表的排序、只适用于列表排序、所以效率高。
  • sorted():全局,可迭代任意对象(字符串,元组,列表,字典等)

sort()使用例子:

简单的使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> L = [5,8,9,3,2,7]
>>> L.sort()
>>> print(L)
[2, 3, 5, 7, 8, 9]

指定关键字的排序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 列表嵌套列表
>>> user = [['Jone', '181', 30], ['Chan', '175', 26], ['Paul', '178', 22]]
>>> user.sort(key=lambda user: user[2])
>>> print(user)
[['Paul', '178', 22], ['Chan', '175', 26], ['Jone', '181', 30]]

也可以用cmp函数实现,不过python3.0后为了语言简化和统一,已经被彻底移除,这里不再赘述。

sorted()使用例子:

排序任意对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> A = 'Python'
>>> print(sorted(A))
['P', 'h', 'n', 'o', 't', 'y']
>>> print(A)
Python
>>>
>>> B = (3, 6, 7, 2, 9)
>>> print(sorted(B))
[2, 3, 6, 7, 9]
>>> print(B)
(3, 6, 7, 2, 9)
>>>
>>> C = [3, 6, 7, 2, 9]
>>> print(sorted(C))
[2, 3, 6, 7, 9]
>>> print(C)
[3, 6, 7, 2, 9]
>>>

根据键值的字典排序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 按照键值(value)排序
>>> D = {'a': '3', 'b': '6', 'c': '2'}
>>> ds = sorted(D.items(), key=lambda x: x[1], reverse=True)
>>> print(ds)
[('b', '6'), ('a', '3'), ('c', '2')]
## 按照键名(key)排序
>>> D = {'a': '3', 'b': '6', 'c': '2'}
>>> ds = sorted(D.items(), key=lambda x: x[0], reverse=True)
>>> print(ds)
[('c', '2'), ('b', '6'), ('a', '3')]

几种常见的排序场景

  1. 列表中嵌套字典,根据字典的值排序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 使用lambda方式
>>> D = [{"name": '张三', 'score': 68}, {'name': '李四', 'score': 97}]
>>> ds = sorted(D, key=lambda x:x['score'], reverse=True)
>>> print(ds)
[{'name': '李四', 'score': 97}, {'name': '张三', 'score': 68}]
>>>
## 使用operator方式
>>> import operator
>>> D = [{"name": '张三', 'score': 68}, {'name': '李四', 'score': 97}]
>>> D.sort(key=operator.itemgetter('score'), reverse=True)
>>> print(D)
[{'name': '李四', 'score': 97}, {'name': '张三', 'score': 68}]
>>>
  1. 列表中嵌套字典,键不同的情况下对值进行排序

可以将列表中的字典先放入到一个大字典中,对整个字典进行排序,在排序完成后,再转换为列表包含字典的形式即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> from operator import itemgetter
>>> dict_list = [{"ming": 87}, {"mei": 93}, {"hua": 68}, {"jon": 75}, {"ston": 100}, {"jack": 56}]
>>> mid_dict = {key: value for x in dict_list for key, value in x.items()}
>>> mid_list = sorted(mid_dict.items(), key=itemgetter(1))
>>> print(mid_list)
[('jack', 56), ('hua', 68), ('jon', 75), ('ming', 87), ('mei', 93), ('ston', 100)]
>>> fin_list = [{x[0]: x[1]} for x in mid_list]
>>> print(fin_list)
[{'jack': 56}, {'hua': 68}, {'jon': 75}, {'ming': 87}, {'mei': 93}, {'ston': 100}]
>>>
  1. 字典嵌套字典的排序:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> D={10:{'aa':1,'bb':2},11:{'aa':2,'bb':0},12:{'aa':0,'bb':3}}
>>> ds=sorted(D.items(), key=lambda x: x[1]['bb'])
>>> print(ds)
[(11, {'aa': 2, 'bb': 0}), (10, {'aa': 1, 'bb': 2}), (12, {'aa': 0, 'bb': 3})]
>>>

---- 钢铁 648403020@qq.com 07.22.2021

参考文档

python排序sort()和sorted()区别:

https://zhuanlan.zhihu.com/p/59702850

列表排序方法sort、sorted技巧篇:

https://blog.csdn.net/bbbeoy/article/details/79741303

字典 列表 嵌套 复杂排序大全:

https://blog.csdn.net/ray_up/article/details/42084863

列表中嵌套字典,根据字典的值排序:

https://blog.csdn.net/Thomas0713/article/details/83028414

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 列表、字典、元组的一些小技巧
我们知道 Python 的内置 dictionary 数据类型是无序的,通过 key 来获取对应的 value。可是有时我们需要对 dictionary 中的 item 进行排序输出,可能根据 key,也可能根据 value 来排。到底有多少种方法可以实现对 dictionary 的内容进行排序输出呢?下面摘取了使用 sorted 函数实现对 dictionary 的内容进行排序输出一些精彩的解决办法。
章鱼猫先生
2021/10/15
1.2K0
Python 列表、字典、元组的一些小技巧
python3字典的排序
通一表述:字典有两个参数,key, value,下面所描述,键:key,值:value
全栈程序员站长
2022/09/13
4300
python 对字典"排序"总结
对字典进行排序?这其实是一个伪命题,搞清楚python字典的定义---字典本身默认以key的字符顺序输出显示---就像我们用的真实的字典一样,按照abcd字母的顺序排列,并且本质上各自没有先后关系,是一个哈希表的结构:
用户5745385
2019/07/04
5.6K0
python 对字典"排序"总结
python字典排序
利用Python 内置函数 sorted 对字典的键或者值进行排序,首先来了解下 sorted 函数
雷子
2024/03/25
1300
python字典排序
Python字典按键/值排序的几种方法
同理,如果我们只需要对sort_by_value稍微修改一下,就可以得到按值排序的结果:
宇宙之一粟
2020/10/26
5.8K0
Python 列表排序
本文最先发布在: https://www.itcoder.tech/posts/python-list-sort/
雪梦科技
2020/06/05
1.8K0
python中列表排序,字典排序,列表中的字典排序
key= lambda dict1:dict1[0] #dict1[0]表示按键,dict1[1]表示按值。
用户8346838
2021/03/10
9.7K0
python字典的合并排序添加查询
python 中映射类型里key和value是一种一对多的关系,通常被认为是一种可变的哈希表。字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,也可存储其他容器类型。
Tim在路上
2020/08/04
1K0
python dict的list排序
对于简单的list排序,直接调用内建函数就可以了,但是对于dict的list排序就没有那么直接了,不过,还是有很简洁的办法的,如:
py3study
2020/01/14
1.9K0
分享几个简单易懂的Python技巧,能够极大的提高工作效率哦!
大家好,我是俊欣,今天和大家来分享几个关于Python的小技巧,都是非常简单易懂的内容,希望大家看了之后能够有所收获。
用户6888863
2021/07/19
4180
Python 学习入门(11)—— 排序
Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。
阳光岛主
2019/02/19
4120
Python 进阶编程之字典的高级用法
一个字典就是一个键对应一个单值的映射,而上面的列表中有相同键。如果你想要一个键映射多个值,那么就需要将这多个值放到另外的序列中,比如 list 或者 set 里面,像下面这样:
Crossin先生
2019/11/10
1.3K0
Python这10个字典操作你必须知道
不要使用 key in d.keys(), 这是一种画蛇添足的操作,因为d.keys()会返回一个新的列表对象,导致内存最大。
IT阅读排行榜
2019/05/14
4860
python list排序
python 列表list中内置了一个十分有用的排序函数sort,sorted,它可以用于列表的排序,以下是例子。
py3study
2020/01/07
1.2K0
Python字典不是不可以排序,是你方法没用对!
摘要:排序是个古老的话题,不过对于字典的排序,常常会让 小白手足无措。好像没有找到可以排序字典的函数呢!到底是按key排序,还是按value排序呢?字典到底可不可以按value排序呢?排完序后,还可以通过key检索吗?当然,还会抛出很多问题,而本文将完美地给出了这些问题的答案!
蒙娜丽宁
2021/02/19
1.1K0
Python-排序-01-字典排序
系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2
zishendianxia
2019/10/23
8960
Python-排序-01-字典排序
python3的sorted和sort
python内置排序函数sorted,可以适用于所有可迭代的对象。而类型自有的sort函数只适用于类型本身。例如list.sort(),只适用于列表类型。另外,sort函数是在原来列表上直接进行排序,而sorted函数则是返回一个排序之后的列表。
zy010101
2022/05/05
3830
python中列表的排序方法操作总结分享
简单记一下python中List的sort方法(或者sorted内建函数)的用法。
我叫什么好
2022/01/08
8420
Python3学习笔记 | 七、Python的类型与运算-字典
字典在Python里是无序集合对象类型,字典的值都有独立的唯一的键(Key),用相应的键来取值。
TeamsSix
2019/09/24
7190
python 字典一些常见的魔法方法以及遇到的面试题
dict 类型不但在各种程序里广泛使用,它也是 Python 语言的基石。模块的命名空间、实例的属性和函数的关键字参数中都可以看到字典的身影。跟它有关的内置函数都在__builtins__.__dict__模块中。正是因为字典至关重要,Python 对它的实现做了高度优化,而散列表则是字典类型性能出众的根本原因。
用户4945346
2020/07/20
7610
相关推荐
Python 列表、字典、元组的一些小技巧
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验