当前位置: 首页 > news >正文

编程题python常用技巧-持续

1.字典

1.1排序 

在Python中,要按照字典的值进行排序,可以按照以下步骤操作:

方法说明

  1. 获取键值对列表‌:使用 dict.items() 获取字典的键值对视图。
  2. 排序键值对‌:使用 sorted() 函数,并通过 key 参数指定按值排序。
  3. 转换回字典(可选)‌:将排序后的列表转换为字典(Python 3.7+ 支持有序字典)。

 

# 原始字典
d = {'apple': 10, 'banana': 5, 'orange': 20}# 按值升序排序键值对
sorted_items = sorted(d.items(), key=lambda x: x[1])# 输出排序后的列表
print("按值升序排列的列表:", sorted_items)
# 输出: [('banana', 5), ('apple', 10), ('orange', 20)]# 转换为有序字典(Python 3.7+)
sorted_dict = dict(sorted_items)
print("排序后的字典:", sorted_dict)
# 输出: {'banana': 5, 'apple': 10, 'orange': 20}# 按值降序排序(添加 reverse=True)
sorted_items_desc = sorted(d.items(), key=lambda x: x[1], reverse=True)
print("按值降序排列的列表:", sorted_items_desc)
# 输出: [('orange', 20), ('apple', 10), ('banana', 5)]

 

 1.2统计字典的 key个数 collections.Counter(arr)

代码实现了对数组 arr 中元素的频率统计,并按出现次数 ‌从低到高‌ 排序。以下是代码解析及优化建议:

group = collections.Counter(arr) freq = group.most_common()[::-1]

  1. collections.Counter(arr)
    统计 arr 中每个元素的出现次数,返回 Counter 对象(字典子类,键为元素,值为频率)38。

    • 例如:arr = [1, 2, 2, 3] → group = {1:1, 2:2, 3:1}
  2. most_common()
    返回元素及其频率的列表,按频率 ‌从高到低‌ 排序。若参数为空(如 most_common()),返回所有元素23。

    • 示例结果:[('b', 3), ('a', 2), ('c', 1)]
  3. [::-1]
    通过切片反转列表,实现 ‌从低到高‌ 排序56。

    • 最终结果:[('c', 1), ('a', 2), ('b', 3)]

潜在问题与改进

1. ‌相同频率元素的顺序不确定性

  • most_common() 对相同频率的元素会保留原始插入顺序(Python 3.7+ 字典有序),但若需严格按元素值排序,需额外处理8。
  • 改进方法‌:显式指定排序规则。
  • freq = sorted(group.items(), key=lambda x: (x[1], x[0])) # 先按频率升序,再按元素值升序

2. ‌性能优化(适用于大数据量)

  • most_common() 的时间复杂度为 O(n log n),若仅需升序结果,可直接生成排序列表:

    freq = sorted(group.items(), key=lambda x: x[1]) # 直接生成升序列表,无需反转


完整示例

from collections import Counter 
arr = [1, 2, 2, 3, 3, 3] 
group = Counter(arr) # 原始方法:反转列表 
freq_reversed = group.most_common()[::-1] 
# 输出:[(1, 1), (2, 2), (3, 3)] 
# 改进方法:显式排序 
freq_sorted = sorted(group.items(), key=lambda x: x[1]) # 输出:[(1, 1), (2, 2), (3, 3)]

方法对比

方法时间复杂度相同频率元素的处理适用场景
most_common()[::-1]O(n log n)保留插入顺序快速实现,无需严格排序
sorted()O(n log n)可自定义排序规则(如元素值)需明确控制排序逻辑

注意事项

  • 空数组处理‌:若 arr 为空,group 也为空,freq 会得到空列表,需在后续逻辑中处理5。
  • 频率为0的元素‌:Counter 默认不包含未出现的元素,但可通过 elements() 遍历所有可能键
    def findLeastNumOfUniqueInts2(self, arr: list, k: int) -> int:group = collections.Counter(arr) # Counter({5: 2, 4: 1})print(group)freq=group.most_common()[::-1] # 逆序[(4, 1), (5, 2)]print(freq)ans=len(freq)for _ ,occ in freq:if k>=occ:ans-=-1k-=occelse:breakreturn ansprint(s.findLeastNumOfUniqueInts2([5, 5, 4], 1))Counter({5: 2, 4: 1})

题目: 1481. 不同整数的最少数目 - 力扣(LeetCode)

 def findLeastNumOfUniqueInts(self, arr: List[int], k: int) -> int:arr_dict={}for i in arr:if i not in arr_dict:arr_dict[i]=1else:arr_dict[i]+=1# 对字典排序 sorted_dict=dict(sorted(arr_dict.items(),key=lambda x:x[1]))#print(sorted_dict)keys=sorted_dict.keys()ans=len(keys)for key in keys:if k-sorted_dict[key]>=0:#sorted_dict.remove(key)ans-=1k=k-sorted_dict[key]else:breakreturn ans

相关文章:

编程题python常用技巧-持续

1.字典 1.1排序 在Python中,要按照字典的值进行排序,可以按照以下步骤操作: 方法说明 ‌获取键值对列表‌:使用 dict.items() 获取字典的键值对视图。‌排序键值对‌:使用 sorted() 函数,并通过 key 参…...

大模型蒸馏技术

提问:请写一篇关于蒸馏大模型的详细解说(论文),要求配有图并不少于8000字。 Deepseek: 大模型蒸馏技术:原理、方法与产业实践 ——基于知识压缩与效率优化的深度解析 目录 引言:大模型时代的…...

深入理解C语言中的整形提升与算术转换

深入理解C语言中的整形提升与算术转换 一.整形提升:概念与原理 在C语言中,整形提升(Integer Promotion)是一个重要但容易被忽视的概念。它指的是在表达式中,任何小于int类型的整型(如char、short&#xf…...

企业经营系统分类及功能详解

近年来互联网行业下行,招聘少,要求离谱,年龄学历背景已经卡的死死的,技术再突出也没用。 但对于软件开发来说,互联网只是一小部分,企业级系统软件开发,虽然不如互联网大起大落,但重…...

IRF2.0IRF3.1

1、IRF3定义 IRF3是一种能够提高网络接入层的接入能力和管理效率的纵向网络整合虚拟化技术,采用IEEE 802.1BR标准协议实现。IRF3将多台PEX设备(Bridge Port Extender)连接到父设备(Parent device)上,将每台…...

【C++】类和对象【中下】

目录 一、类与对象1、运算符重载1.2 赋值运算符重载1.3 <<运算符和>>运算符1.4 前置与后置 2、 const成员函数3、取地址运算符重载 个人主页<—请点击 C专栏<—请点击 一、类与对象 本期的主题是一步步完善日期类的编写&#xff0c;将要讲解的知识融入在代…...

ThreadLocal详解

什么是 ThreadLocal&#xff1f;​ ThreadLocal 是 Java 中的一个工具类&#xff0c;用于为每个线程提供独立的变量副本&#xff0c;使得每个线程可以独立操作自己的变量&#xff0c;避免多线程环境下的数据竞争问题。它的核心思想是​​线程封闭​​&#xff08;Thread Confi…...

Vue3 + OpenLayers 企业级应用进阶

1. 企业级架构设计 1.1 微前端架构集成 // src/micro-frontend/map-container.ts import { Map } from ol; import { registerMicroApps, start } from qiankun;export class MapMicroFrontend {private map: Map;private apps: any[];constructor(map: Map) {this.map map;…...

如何提升自我执行力?

提升个人执行力是一个系统性工程&#xff0c;需要从目标管理、习惯养成、心理调节等多方面入手。 以下是具体方法&#xff0c;结合心理学和行为科学原理&#xff0c;帮助你有效提升执行力&#xff1a; 一、明确目标&#xff1a;解决「方向模糊」问题 1. 用SMART原则设定目标 …...

L3-041 影响力

下面给出基于“切比雪夫距离”&#xff08;Chebyshev 距离&#xff09;之和的高效 O(nm) 解法。核心思想是把 ∑ u 1 n ∑ v 1 m max ⁡ ( ∣ u − i ∣ , ∣ v − j ∣ ) \sum_{u1}^n\sum_{v1}^m\max\bigl(|u-i|,|v-j|\bigr) u1∑n​v1∑m​max(∣u−i∣,∣v−j∣) 拆成两个…...

【ESP32】st7735s + LVGL使用-------图片显示

【ESP32】st7735s + LVGL使用-------图片显示 1、文件准备2、工程搭建3、代码编写4、应用部分5、函数调用6、显示效果移植部分参考这个博客: 【ESP32】st7735s + LVGL移植 1、文件准备 本次图片放在内部存储,先使用转换工具将要显示的图片转换好。 文件名保存为xx.c,xx这…...

MERGE存储引擎(介绍,操作),FEDERATED存储引擎(介绍,操作),不同存储引擎的特性图

目录 MERGE存储引擎(合并) 介绍 创建表 语法 示例 查看.mrg文件 操作 查询结果 示例 重建逻辑表 FEDERATED存储引擎 结盟 介绍 ​编辑 应用场景 操作 开启 创建表 对本地表进行数据插入 EXAMPLE存储引擎 不同存储引擎的特性​编辑 MERGE存储引擎(合并) 介绍…...

初学者如何学习AI问答应用开发范式

本文是根据本人2年大模型应用开发5年小模型开发经验&#xff0c;对AI问答应用的开发过程进行总结。 技术范式 现在超过80%的AI问答是 提示词 大模型&#xff0c; 然后就是RAG 方案&#xff0c;这两种无疑是主流方案。 1、提示词大模型 适合于本身业务不超过大模型的知识范围…...

GESP2024年6月认证C++八级( 第二部分判断题(1-5))

判断题2&#xff1a; #include <iostream> #include <iomanip> using namespace std;int main() {double a 1e308;double b 1e-10;double orig_a a, orig_b b;a a b;b a - b;a a - b;cout << fixed << setprecision(20);cout << "…...

npm命令介绍(Node Package Manager)(Node包管理器)

文章目录 npm命令全解析简介基础命令安装npm&#xff08;npm -v检插版本&#xff09;初始化项目&#xff08;npm init&#xff09;安装依赖包&#xff08;npm install xxx、npm i xxx&#xff09;卸载依赖包&#xff08;npm uninstall xxx 或 npm uni xxx、npm remove xxx&…...

小刚说C语言刷题—1602总分和平均分

1.题目描述 期末考试成绩出来了&#xff0c;小明同学语文、数学、英语分别考了 x、y、z 分&#xff0c;请编程帮助小明计算一下&#xff0c;他的总分和平均分分别考了多少分&#xff1f; 输入 三个整数 x、y、z 分别代表小明三科考试的成绩。 输出 第 11行有一个整数&…...

python类私有变量

在Python中&#xff0c;要将一个属性定义为类的内部属性&#xff08;也就是私有属性&#xff09;&#xff0c;通常会在属性名称前加一个下划线&#xff08;_&#xff09;或两个下划线&#xff08;__&#xff09;。这两种方式有不同的效果&#xff1a; 单下划线&#xff08;_&a…...

前端如何转后端

前端转后端是完全可行的&#xff0c;特别是你已经掌握了 JavaScript / TypeScript&#xff0c;有一定工程化经验&#xff0c;这对你学习如 Node.js / NestJS 等后端技术非常有利。下面是一条 系统化、实践导向 的路线&#xff0c;帮助你高效完成从前端到后端的转型。 ✅ 一、评…...

数字智慧方案5976丨智慧农业顶层设计建设与运营方案(59页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 资料解读&#xff1a;智慧农业顶层设计建设与运营方案 在现代农业发展进程中&#xff0c;智慧农业成为推动农业转型升级、提升竞争力的关键力量。这份《智慧农业顶层设计建设与运营方案》全面且深入地探讨了智慧农业的建设现状、需求分析、…...

软件工程国考

软件工程-同等学力计算机综合真题及答案 &#xff08;2004-2014、2017-2024&#xff09; 2004 年软工 第三部分 软件工程 &#xff08;共 30 分&#xff09; 一、单项选择题&#xff08;每小题 1 分&#xff0c;共 5 分&#xff09; 软件可用性是指&#xff08; &#xff09…...

linux python3安装

1 安装依赖环境 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 2 mkdir -p /usr/python3 3 cd usr/python3; tar -zxvf Python-3.8.3.tgz;cd Python-3.8.3 4 ./confi…...

软件测评中心如何保障软件质量与性能?评测范围和标准有哪些?

软件测评中心对保障软件质量与性能有关键作用&#xff0c;它像软件世界里的质量卫士&#xff0c;会评测各类软件&#xff0c;能为用户选出真正优质好用的软件&#xff0c;我将从多个方面向大家介绍软件测评中心。 评测范围 软件测评中心的评测范围很广&#xff0c;它涵盖了常…...

从MCP基础到FastMCP实战应用

MCP(https://github.com/modelcontextprotocol) MCP&#xff08;模型上下文协议&#xff09; 是一种专为 基于LLM的工具调用外部工具而设计的协议 &#xff0c; 本质上是 LLM ↔ 工具之间的RPC&#xff08;远程过程调用&#xff09; 的一种安全且一致的处理方式&#xff0c; 是…...

【云备份】服务端工具类实现

1.文件实用工具类设计 不管是客户端还是服务端&#xff0c;文件的传输备份都涉及到文件的读写&#xff0c;包括数据管理信息的持久化也是如此&#xff0c;因此首先设 计封装文件操作类&#xff0c;这个类封装完毕之后&#xff0c;则在任意模块中对文件进行操作时都将变的简单化…...

如何在Cursor中使用MCP服务

前言 随着AI编程助手的普及&#xff0c;越来越多开发者选择在Cursor等智能IDE中进行高效开发。Cursor不仅支持代码补全、智能搜索&#xff0c;还能通过MCP&#xff08;Multi-Cloud Platform&#xff09;服务&#xff0c;轻松调用如高德地图API、数据库等多种外部服务&#xff…...

PB的框架advgui反编译后控件无法绘制的处理(即导入pbx的操作步骤)

advguiobjects.pbl反编译后&#xff0c;涉及到里面一个用pbni开发的一个绘制对象需要重新导入才可以。否则是黑色的无法绘制控件&#xff1a; 对象的位置在&#xff1a; 操作&#xff1a; 导入pbx文件中的对象。 恢复正常&#xff1a; 文章来源&#xff1a;PB的框架advgui反编译…...

第 11 届蓝桥杯 C++ 青少组中 / 高级组省赛 2020 年真题,选择题详细解释

一、选择题 第 2 题 在二维数组按行优先存储的情况下&#xff0c;元素 a[i][j] 前的元素个数计算如下&#xff1a; 1. **前面的完整行**&#xff1a;共有 i 行&#xff0c;每行 n 个元素&#xff0c;总计 i * n 个元素。 2. **当前行的前面元素**&#xff1a;在行内&#x…...

Python 装饰器基础知识科普

装饰器定义与基本原理 装饰器本质上是一个可调用的对象&#xff0c;它接收另一个函数&#xff08;即被装饰的函数&#xff09;作为参数。装饰器可以对被装饰的函数进行处理&#xff0c;之后返回该函数&#xff0c;也可以将其替换为另一个函数或可调用对象。 代码示例理解 有…...

数字基带信号和频带信号的区别解析

数字基带信号和数字频带信号是通信系统中两种不同的信号形式&#xff0c;它们的核心区别在于是否经过调制以及适用的传输场景。以下是两者的主要区别和分析&#xff1a; 1. 定义与核心区别 数字基带信号&#xff08;Digital Baseband Signal&#xff09; 未经调制的原始数字信号…...

Nginx Proxy Manager 中文版安装部署

目录 Nginx Proxy Manager 中文版安装部署教程一、项目简介1.1 主要功能特点1.2 项目地址1.3 系统架构与工作原理1.4 适用场景 二、系统要求2.1 硬件要求2.2 软件要求 三、Docker环境部署3.1 CentOS系统安装Docker3.2 Ubuntu系统安装Docker3.3 安装Docker Compose 四、安装Ngin…...

类和对象(拷贝构造和运算符重载)下

类和对象(拷贝构造和运算符重载)下 这一集的主要目标先是接着上一集讲完日期类。然后再讲一些别的运算符的重载&#xff0c;和一些语法点。 这里我把这一集要用的代码先放出来:(大家拷一份代码放在编译器上先) Date.h #include <iostream> #include <cassert> …...

Codeforces Round 1008 (Div. 2) C

C 构造 题意&#xff1a;a的数据范围大&#xff0c;b的数据范围小&#xff0c;要求所有的a不同&#xff0c;考虑让丢失的那个a最大即可。问题变成&#xff1a;构造一个最大的a[i] 思路&#xff1a;令a2是最大的,将a1,a3,a5....a2*n1&#xff0c;置为最大的b&#xff0c;将a4,a…...

操作系统(1)多线程

在当今计算机科学领域&#xff0c;多线程技术已成为提高程序性能和响应能力的关键手段。无论是高性能计算、Web服务器还是图形用户界面应用程序&#xff0c;多线程都发挥着不可替代的作用。本文将全面介绍操作系统多线程的概念、实现原理、同步机制以及实际应用场景&#xff0c…...

系统架构设计师:设计模式——创建型设计模式

一、创建型设计模式 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给另一个对象。 随着系统演化得越来越依赖于对象复合而不是类…...

使用Set和Map解题思路

前言 Set和Map这两种数据结构,在解决一些题上&#xff0c;效率很高。跟大家简单分享一些题以及如何使用Set和Map去解决这些题目。 题目链接 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 138. 随机链表的复制 - 力扣&#xff08;LeetCode&#xff09; 旧…...

Java 算法入门:从基础概念到实战示例

在计算机科学领域&#xff0c;算法如同魔法咒语&#xff0c;能够将无序的数据转化为有价值的信息。对于 Java 开发者而言&#xff0c;掌握算法不仅是提升编程能力的关键&#xff0c;更是解决复杂问题的核心武器。本文将带领你走进 Java 算法的世界&#xff0c;从基础概念入手&a…...

【大模型】图像生成:ESRGAN:增强型超分辨率生成对抗网络的革命性突破

深度解析ESRGAN&#xff1a;增强型超分辨率生成对抗网络的革命性突破 技术演进与架构创新核心改进亮点 环境配置与快速入门硬件要求安装步骤 实战全流程解析1. 单图像超分辨率重建2. 自定义数据集训练3. 视频超分处理 核心技术深度解析1. 残差密集块&#xff08;RRDB&#xff0…...

记录搭建自己的应用中心-需求看板搭建

记录搭建自己的应用中心-需求看板搭建 人员管理新增用户组织用户登录和操作看板状态看板任务通知任务详情 人员管理 由于不是所有人都有应用管理权限&#xff0c;所以额外做了一套应用登录权限&#xff0c;做了一个新的组织人员表&#xff0c;一个登录账户下的所有应用人员共享…...

探秘数据结构:构建高效算法的灵魂密码

摘要 数据结构作为计算机科学的基石&#xff0c;其设计与优化直接影响算法效率、资源利用和系统可靠性。本文系统阐述数据结构的基础理论、分类及其核心操作&#xff0c;涵盖数组、链表、栈、队列、树、图、哈希表与堆等经典类型。深入探讨各结构的应用场景与性能对比&#xf…...

多节点监测任务分配方法比较与分析

多监测节点任务分配方法是分布式系统、物联网&#xff08;IoT&#xff09;、工业监测等领域的核心技术&#xff0c;其核心目标是在资源受限条件下高效分配任务&#xff0c;以优化系统性能。以下从方法分类、对比分析、应用场景选择及挑战等方面进行系统阐述&#xff1a; 图1 多…...

spring-boot-maven-plugin 将spring打包成单个jar的工作原理

spring-boot-maven-plugin 是 Spring Boot 的 Maven 插件&#xff0c;它的核心功能是将 Spring Boot 项目打包成一个独立的、可执行的 Fat JAR&#xff08;包含所有依赖的 JAR 包&#xff09;。以下是它的工作原理详解&#xff1a; 1. 默认 Maven 打包 vs Spring Boot 插件打包…...

盐化行业数字化转型规划详细方案(124页PPT)(文末有下载方式)

资料解读&#xff1a;《盐化行业数字化转型规划详细解决方案》 详细资料请看本解读文章的最后内容。 该文档聚焦盐化行业数字化转型&#xff0c;全面阐述了盐化企业信息化建设的规划方案&#xff0c;涵盖战略、架构、实施计划、风险及效益等多个方面&#xff0c;旨在通过数字化…...

开源革命:从技术共享到产业变革——卓伊凡的开源实践与思考-优雅草卓伊凡

开源革命&#xff1a;从技术共享到产业变革——卓伊凡的开源实践与思考-优雅草卓伊凡 一、开源的本质与行业意义 1.1 开源软件的定义与内涵 当卓伊凡被问及”软件开源是什么”时&#xff0c;他给出了一个生动的比喻&#xff1a;”开源就像将食谱公之于众的面包师&#xff0c…...

解锁 C++26 的未来:从语言标准演进到实战突破

一、C26 的战略定位与开发进展 C26 的开发已进入功能冻结阶段&#xff0c;预计 2026 年正式发布。作为 C 标准委员会三年一迭代的重要版本&#xff0c;其核心改进聚焦于并发与并行性的深度优化&#xff0c;同时在内存管理、元编程等领域实现重大突破。根据 ISO C 委员会主席 H…...

terraform实现本地加密与解密

在 Terraform 中实现本地加密与解密&#xff08;不依赖云服务&#xff09;&#xff0c;可以通过 OpenSSL 或 GPG 等本地加密工具配合 External Provider 实现。以下是完整的安全实现方案&#xff1a; 一、基础架构设计 # 文件结构 . ├── secrets │ ├── encrypt.sh …...

黄雀在后:外卖大战新变局,淘宝+饿了么开启电商大零售时代

当所有人以为美团和京东的“口水战”硝烟渐散&#xff0c;外卖大战告一段落时&#xff0c;“螳螂捕蝉&#xff0c;黄雀在后”&#xff0c;淘宝闪购联合饿了么“闪现”外卖战场&#xff0c;外卖烽火再度燃起。 4 月30日&#xff0c;淘宝天猫旗下即时零售业务“小时达”正式升级…...

基本功能学习

一.enum枚举使用 E_SENSOR_REQ_NONE 的定义及用途 在传感器驱动开发或者电源管理模块中&#xff0c;E_SENSOR_REQ_NONE通常被用来表示一种特殊的状态或请求模式。这种状态可能用于指示当前没有活动的传感器请求&#xff0c;或者是默认初始化状态下的一种占位符。 可能的定义…...

59常用控件_QComboBox的使用

目录 代码示例:使用下拉框模拟麦当劳点餐 代码示例&#xff1a;从文件中加载下拉框的选项 QComboBox表示下拉框 核心属性 属性说明currentText当前选中的文本currentIndex当前选中的条目下标。 从 0 开始计算。如果当前没有条目被选中&#xff0c;值为 -1editable是否允许修改…...

卡洛诗西餐的文化破圈之路

在餐饮市场的版图上&#xff0c;西餐曾长期被贴上“高端”“舶来品”“纪念日专属”的标签&#xff0c;直到卡洛诗以高性价比西餐的定位破局&#xff0c;将意大利风情与家庭餐桌无缝衔接。这场从异国符号到家常选择的转型&#xff0c;不仅是商业模式的创新&#xff0c;更是一部…...

Python-57:Base32编码和解码问题

问题描述 你需要实现一个 Base32 的编码和解码函数。 相比于 Base32&#xff0c;你可能更熟悉 Base64&#xff0c;Base64 是非常常见的用字符串形式表示二进制数据的方式&#xff0c;在邮件附件、Web 中的图片中都有广泛的应用。 Base32 是 Base64 的变种&#xff0c;与 Bas…...