python中字典dict排序sorted的实现
作者:panbaoran913 发布时间:2023-02-20 13:21:45
标签:python,字典,排序,sorted
key | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
value | 25 | 20 | 15 | 10 | 5 | 30 |
字典P={1:10,2:25,3:5,4:15,5:20,6:30}
有以下3种迭代器:
P.items()
dict_items([(1, 10), (2, 25), (3, 5), (4, 15), (5, 20), (6, 30)])
P.keys()
dict_keys([1, 2, 3, 4, 5, 6])
P.valuse()
dict_values([10, 25, 5, 15, 20, 30])
一、sorted使用
基本用法
list = sorted(iterable, key=None, reverse=False)
a = [5,3,4,2,1]
print(sorted(a))#[1,2,3,4,5]
key是排序的关键字
reverse是升序还是降序,默认False为升序
二、按照keys的顺序对dict中的keys排序
这里忽略dict中的values的存在,直接使用迭代器P.keys()排序即可,类似与list的排序
sorted(P.keys())
三、按照valuse的顺序对dict中的values排序
这里忽略dict中的keys的存在,直接使用迭代器P.valuse()排序即可,类似与list的排序.
sorted(P.valuse())
四、按照keys的顺序对dict中的items排序
sorted(P.items(),key=lambda item:item[0])
# [(1, 10), (2, 25), (3, 5), (4, 15), (5, 20), (6, 30)]
P.iems()是一个迭代器,其中每个元素以元组(1,10),(2,25),…的形式.lambda
中tiem表示迭代器中的每个具体的元素,所以item[0]会表示原dict中的keys值.sorted中的key值是选择了dict中的keys作为排序的准则.
或者,上面是一种理解的形式,下面的一种对sorted对dict的默认形式.本质上是一种.
sorted(P.items())
#[(1, 10), (2, 25), (3, 5), (4, 15), (5, 20), (6, 30)]
五、按照values的顺序对dict中的items排序
sorted(P.items(),key=lambda item:item[1])
# [(3, 5), (1, 10), (4, 15), (5, 20), (2, 25), (6, 30)]
理解同上
六、按照keys的顺序对dict的values排序
P1=sorted(P.items(),key=lambda item:item[0])
#[(1, 10), (2, 25), (3, 5), (4, 15), (5, 20), (6, 30)]
P2=[a[1] for a in P1]
# [10, 25, 5, 15, 20, 30]
或者
P2=[a[1] for a in sorted(P.items()]) ]
七、按照values的顺序对dict中的keys排序
P1=sorted(P.items(),key=lambda item:item[1]
# [(3, 5), (1, 10), (4, 15), (5, 20), (2, 25), (6, 30)]
P2=[a[0] for a in P1]
# [3, 1, 4, 5, 2, 6]
八、字典的先进先出
OrderedDict 是 按照有序插入顺序存储 的有序字典。
from collections import OrderedDict
增加方法: popitem(last=True)
移除并返回一个键值对,last=True 时,后进先出,反之,先进先出。
move_to_end(key, last=True)
last=True时,将键值对移至最右。反之,移至最左。key不存在时,抛错 KeyError。
来源:https://blog.csdn.net/panbaoran913/article/details/130823366


猜你喜欢
- Python 功能真的很强,强大到让人吃惊,它能做的事囊括爬虫、数据分析、数据可视化、游戏等等各方面,这些功能在实际的使用中应用广泛,开发程
- 本文实例讲述了python实现的AES双向对称加密解密与用法。分享给大家供大家参考,具体如下:高级加密标准(Advanced Encrypt
- 概述由MySQL5.0 版本开始支持存储过程。如果在实现用户的某些需求时,需要编写一组复杂的SQL语句才能实现的时候,那么我们就可以将这组复
- 本文实例为大家分享了javascript实现双端队列的具体代码,供大家参考,具体内容如下1.双端队列双端队列是一种允许我们同时从前端和后端添
- 前段时间因为忙一些其它的事情,分享的有些少,最近学习一下redis在Go语言开发中的应用。一、理论知识Redis是一个开源的、使用C语言编写
- 在 邮件报表 之类的开发任务中,需要生成 HTML 表格。使用 Python 生成 HTM
- 在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本
- 一、base64模块base64模块提供了在二进制数据和可打印ASCII字符间编解码的功能,包括 RFC3548中定义的Base16, Ba
- 一、 node安装1)如果不确定自己是否安装了node,可以在命令行工具内执行: node -v (检查一下 版本);2)如果 执行结果显示
- digo工具地址:https://github.com/werbenhu/digo特性使用注释中的注解自动代码生成自动检测循环依赖编译时期依
- 本文实例讲述了Python3.5实现的 * 菜单功能。分享给大家供大家参考,具体如下:程序: * 菜单要求:
- 目录一、多表查询1、查询语法2、 准备sql3、 笛卡尔积4、多表查询的分类4.1 内连接查询4.2 外链接查询 4.3 子查询&
- 一、序言前段时间一直在弄报表,快被这些报表整吐了,然后接触到了Oracle的table()函数。所以今天把table()函数的具体用法整理下
- 一、页的概览我们往 MySQL 插入的数据最终都是存在页中的。在 InnoDB 中的设计中,页与页之间是通过一个双向链表连接起来。而存储在页
- 个人觉得还是不要使用中文作为文件名的好,虽然我们用的语言是中文,毕竟中文容易出现问题,兼容性不好。用Dreamweaver制作网页时,如果插
- 相关推荐:完整的sql中文参考手册(chm)下载 DB2 提供了关连式资料库的查询语言 sql (Structured Query
- 这只是符合比较正常的需求和场景。#一、适用合并两个字典(key不能相同否则会被覆盖),简单,好用。A = {'a': 11,
- property属性一种用起来像是使用实例属性一样的特殊属性,可以对应于某个方法既要保护类的封装特性,又要让开发者可以使用 对象.属性 的方
- 一、基础理论1、TensorFlowtensor:张量(数据)flow:流动Tensor-Flow:数据流2、TensorFlow过程Ten
- 第一种方案、最简单、普通的方法:SELECT TOP 30 * FROM ARTICLE WHERE ID NOT IN(SELECT TO