常见列表字典排序

news2025/4/4 17:39:19

一、列表排序

demoList = [1, 3, 2, 4, 9 ,7]

res = sorted(demoList)  # 默认升序

# 降序
# res = sorted(demoList, reverse=True)

print(res)

在这里插入图片描述

二、字典排序

demoDict = {"篮球": 5, "排球": 9, "网球": 6, "足球": 3}

# sorted排序
res = sorted(demoDict.items(),key=lambda x:x[1])
print(res)
# sort排序,其实将字典转成<<列表+元组>>格式排序
newList = list(demoDict.items())  # [('篮球', 5), ('排球', 9), ('网球', 6), ('足球', 3)]
newList.sort(key=lambda x:x[1])
print(newList)
print(dict(newList))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、<<列表+字典>>排序

demoList = [
	{"name": "张三", "age": 16}, {"name": "李四", "age": 24}, 
	{"name": "王五", "age": 20}, {"name": "赵六", "age": 18}
]

sorted(demoList, key=lambda x:x["age"])

在这里插入图片描述

四、<<列表+元组>>排序

  • 在 (二、字典排序)中有介绍

五、<<列表+列表>>排序

demoList = [
	["张三", 16, "北京市"], ["李四", 24, "上海市"], 
	["王五", 20, "广州市"], ["赵六", 18, "深圳市"]
]

sorted(demoList, key=lambda x:x[1])

在这里插入图片描述

六、<<列表+对象>>排序

class Student:
    def __init__(self, name, grade, age):
        self.name = name
        self.grade = grade
        self.age = age
    def __repr__(self):
        return repr((self.name, self.grade, self.age))

stuObj = [
        Student('john', 'A', 15),
        Student('jane', 'B', 12),
        Student('dave', 'B', 10),
]

sorted(stuObj, key=lambda x: x.age)

在这里插入图片描述

七、<<列表+字典运算>>排序

demoList = [
    {'key1': 1, 'key2': 1}, {'key1': 5, 'key2': 1}, {'key1': 3, 'key2': 6}, 
    {'key1': 2, 'key2': 3}, {'key1': 4, 'key2': 9}
]

demoList.sort(key=lambda x:x["key1"]+x["key2"])
print(demoList)

在这里插入图片描述

八、高级拓展

8.1、None值无法被排序

demoList = [
	{"name": "张三", "age": 16}, {"name": "李四", "age": 24}, 
	{"name": "王五", "age": 20}, {"name": "赵六", "age": 18},
	{"name": "孙七", "age": None}
]

在这里插入图片描述

  • 解决方式
demoList.sort(key=lambda x:(x["age"] is None, x["age"] == "", x["age"]))
print(demoList)

在这里插入图片描述

8.2、字典取最大|小值

demoDict = {"篮球": 5, "排球": 9, "网球": 6, "足球": 3}

# 最大值
maxData = max(demoDict.items(), key=lambda x:x[1])
print(maxData)
# 最小值
minData = min(demoDict.items(), key=lambda x:x[1])
print(minData)

在这里插入图片描述
在这里插入图片描述

8.3、多重条件排序

demoList = [
    {"name": "诺基亚K", "price": 2399, "level": 1}, {"name":"魅族", "price": 2499, "level": 3},
    {"name": "中兴E", "price": 2399, "level": 3}, {"name": "vivoZ", "price": 2799, "level": 2}, 
    {"name": "oppoT", "price": 2699, "level": 2}, {"name": "小米Y", "price": 2999, "level": 2}, 
    {"name": "华为X", "price": 2999, "level": 1}, {"name": "苹果P", "price": 5799, "level": 1}, 
    {"name": "三星W", "price": 5799, "level": 1}
]

# 两重查询条件,价格(默认升序)、级别(默认升序)
sorted(demoList, key=lambda x:(x["price"], x["level"]))
# 两重查询条件,价格(默认升序)、级别(降序可以用-)
sorted(demoList, key=lambda x:(x["price"], -x["level"]))
  • 价格⬆级别⬆
    在这里插入图片描述
  • 价格⬆级别⬇
    在这里插入图片描述

8.4、operator实现排序

  • 排序的思想同匿名函数lambda一样
# 举个字典排序
demoDict = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}

# lambda排序
sorted(demoDict.items(), key=x: x[1])

# operator排序
import operator
sorted(demoDict.items(), key=operator.itemgetter(1))

# 仔细看其实排序都是一样的,无非是换种写法

8.5、多层列表字典排序

demoDict = {
    "a": [{"key": 2}], "c": [{"key": 1}], "b": [{"key": 3}]
}

sorted(demoDict.items(), key=lambda x:x[1][0]["key"])
print(demoDict)
print(dict(demoDict))

在这里插入图片描述
在这里插入图片描述

九、结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1037251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python_ithheima_第二阶段

第一章 01-初识对像 02 类的成员方法 03 类和对象 04 构造方法 05 魔术方法 06 封装 07 封装的课后练习题讲解 08 继承的基础语法 pass关键字的功能是“语法补全” 同名成员或方法&#xff0c;谁先来谁优先级高 09 复写父类成员和调用父类成员 10 变量的类型注解 11 函数和方法…

gitee-快速设置

快速设置— 如果你知道该怎么操作&#xff0c;直接使用下面的地址 HTTPS SSH: gitgitee.com:liuzl33078235/esp-idf.git 我们强烈建议所有的git仓库都有一个README, LICENSE, .gitignore文件 初始化 readme 文件 Git入门&#xff1f;查看 帮助 , Visual Studio / TortoiseG…

RabbitMQ 集群 - 普通集群、镜像集群、仲裁队列

目录 一、RabbitMQ 集群 1.1、前言 1.2、普通集群 1.3、镜像集群 1.4、仲裁队列 一、RabbitMQ 集群 1.1、前言 前面我们已经解决了消息可靠性问题&#xff0c;以及延迟消息问题 和 消息堆积问题. 这最后一章&#xff0c;我们就来解决以下 mq 的可用性 和 并发能力. 1.2、…

企业贸易站官网是HTML模板源码,提供完整源代码

企业贸易站官网是HTML模板源码&#xff0c;提供完整源代码二改的是 为了一起学习所以就分享出来了 有能力的可以自己做成主题配合帝国或者WordPress系统 &#xff08;访问密码&#xff1a;2971&#xff09;无需解压密码 源代码&#xff1a;https://url53.ctfile.com/f/20638…

Vue的自定义事件(Custom Events):实现组件间通信的强大工具

Vue的自定义事件&#xff08;Custom Events&#xff09;&#xff1a;实现组件间通信的强大工具 Vue.js是一款流行的JavaScript框架&#xff0c;用于构建交互式的Web应用程序。在Vue中&#xff0c;组件是构建应用程序的基本单元&#xff0c;它们之间的通信对于构建复杂的应用非…

模拟实现offsrtof

写一个宏&#xff0c;计算结构体中某变量对于首地址的偏移 设计思路&#xff1a; 1.偏移量&#xff0c;用每个所求元素的地址减去结构体初始值的地址可得 2.如计算图示&#xff0c;第一个元素的偏移量结构体初始值必为0&#xff0c;第二个为4&#xff0c;其次为6&#xff0c;…

微信小程序更改AI类目-深度合成-AI绘画/AI问答教程

实测截图 准备材料&#xff1a; 1.营业执照 2.企业公章 一、首先我们需要到百度智能云进行企业认证 https://cloud.baidu.com/ 注册登录后进行企业认证 认证成功后申请千帆大模型平台和AI作画 开通付费服务 开通完以后点击右上角财务 选择合同管理 申请合同 将所有的选…

如何利用Arcgis进行地统计学分析(一):地统计学分析概念及其分析流程

一、地统计分析概念 地统计&#xff08;Geostatistics&#xff09;又称地质统计&#xff0c;也可以称为空间统计分析&#xff0c;其是统计学的一个分支。地统计学是以区域化变量理论为基础&#xff0c;以变异函数&#xff08;variogram&#xff09;为基本工具来研究分布于空间&…

Python 潮流周刊#21:如何提升及测量 Python 代码的性能?

你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。标题取自其中三则分享&#xff0c;不代表全部内容都是该主题&#xff0c;特此声明。 本周刊由 Python猫 出品&#xff0c;精心筛选国内外的 250 信息源&#xff0c;为你挑选…

ruoyi-nbcio增加websocket与测试页面

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 为了后面流程发起等消息推送&#xff0c;所以需要集成websocket。 1、后端增加websoket支持 首先在framework模块里的pom.xml增加websocket <dependency…

肖sir__项目实战讲解__004

项目实战讲解 一、项目的类型 金融类&#xff1a; 保险(健康险理财险)、证券、基金(股票型基金、混合型基金、指数型基金、债券型基金、 天天基金网&#xff08;ETF基金、货币型基金、量化基金)、银行、贷款、信用卡、外汇、二元期权、期货原油、blockchain、 数字货币、黄金白…

Nginx环境搭建、负载均衡测试

Nginx环境搭建、负载均衡测试 系统环境&#xff1a; win10&#xff0c;IDEA2020&#xff0c;JDK8 一、nginx环境搭建 1.ngxin下载 Nginx官网下载&#xff1a; http://nginx.org/en/download.html Nginx有三种版本&#xff0c;分别是Mainline version&#xff08;开发版&…

Vue load 页面报错:Error: Request failed with status code 404 ###createError.js

vue 项目 npm run dev 之后一切正常 在打开页面 http://localhost:8080/ 的时候后台报错 Error: Request failed with status code 404 at createError (\node_modules\axios\lib\core\createError.js) 网上各种查找原因&#xff0c;说是后台接口对接跨域问题&#xff0c;但…

C++——list

作者&#xff1a;几冬雪来 时间&#xff1a;2023年9月24日 内容&#xff1a;C板块list知识讲解 目录 前言&#xff1a; 什么是list&#xff1a; 遍历list&#xff1a; insert&#xff1a; find&#xff1a; insert与erase&#xff1a; merge&#xff1a; unique&am…

TLS/SSL(十) session缓存、ticket 票据、TLS 1.3的0-RTT

一 TLS优化手段 TLS 为了提升握手速度而提出优化手段,主要是减少TLS握手中RTT消耗的时间关于session cache和session ticket,nginx关于ssl握手的地方都有影子 [指令] https面经 ① session 缓存 resume: 重用,复用 案例&#xff1a; 第二次访问www.baidu.com 说明&#x…

Linux-多路转接-epoll

epoll 接口认识epoll_createepoll_ctlepoll_wait epoll工作原理在内核中创建的数据结构epoll模型的一个完整工作流程 epoll工作模式LT-水平触发ET-边缘触发两种方式的对比 epoll的使用场景对于poll的改进惊群效应什么是惊群效应如何解决惊群效应原子操作/mutex/spinlock如何选择…

数据结构(java)--队列1

一、我们还是依旧引入一个小例子&#xff08;银行排队&#xff09;&#xff1a; 需要取号排队&#xff0c;服务完下一个 二、队列介绍 1&#xff09;队列是一个有序列表&#xff0c;可以用数组或是链表来实现 2&#xff09;遵循先入先出的原则。即&#xff1a;先存入队列的数…

世界前沿技术发展报告2023《世界信息技术发展报告》(三)量子信息技术

&#xff08;三&#xff09;量子信息技术 1. 概述2. 量子计算2.1 阿里巴巴达摩院成功研制两比特量子芯片&#xff0c;单比特操控精度超99.97%2.2 加拿大Xanadu公司开发出可编程光量子计算机2.3 美国英伟达公司为经典-量子混合计算推出开发架构2.4 日本国家自然科学研究所开发出…

el-tree实现菜单功能

用到element tree组件&#xff0c;需要了解他的一些方法 <template><div><!-- default-expand-all 默认展开全部数据 --><!-- expand-on-click-node 只有点击箭头才会收缩节点 --><!-- check-on-click-node 点击文本选中 --><!-- show-check…

cadence - 在allegro中出报告(Padstack Usage Report)来辅助制作orcad原理图封装

文章目录 cadence - 在allegro中出报告(Padstack Usage Report)来辅助制作orcad原理图封装概述笔记做PCB封装出报告 - Padstack Usage Report做原理图封装END cadence - 在allegro中出报告(Padstack Usage Report)来辅助制作orcad原理图封装 概述 现在做封装, 还是手工弄. 在…