編程題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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78056.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78056.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78056.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

硬件工程師面試常見問題(11)

第五十一問:器件手冊的翻譯題目 要學英語啊,孩子。 第五十二問:二極管三極管常識題 1.二極管的導通電壓一般是 0.7V 2.MOS管根據摻雜類型可以分為 NMOS和PMOS 3.晶體三極管在工作時,發射結和集電結均處于正向偏置,該晶體管工作在一飽和態。…

mysql 配置文件中的[client]、[mysqld]、[mysqldump]和[mysql]區塊的作用區別

1. [client] 區塊 作用: 適用于 所有 MySQL 客戶端工具(如 mysql 命令行客戶端、mysqldump、mysqladmin 等)。 常見配置項: [client] host 127.0.0.1 # 默認連接的服務器地址 port 3306 # 默認端口 user root …

SARSA 算法詳解:python從零實現

喜歡可以訂閱專欄喲 第一章 強化學習基礎與核心概念 1.1 強化學習的定義與特點 強化學習(Reinforcement Learning, RL)是機器學習三大范式之一(監督學習、無監督學習、強化學習),其核心思想是通過智能體(Agent)與環境(Environment)的持續交互來學習最優策略。與監督…

(C題|社交媒體平臺用戶分析問題)2025年第二十二屆五一數學建模競賽(五一杯/五一賽)解題思路|完整代碼論文集合

我是Tina表姐,畢業于中國人民大學,對數學建模的熱愛讓我在這一領域深耕多年。我的建模思路已經幫助了百余位學習者和參賽者在數學建模的道路上取得了顯著的進步和成就。現在,我將這份寶貴的經驗和知識凝練成一份全面的解題思路與代碼論文集合…

AI重塑SEO關鍵詞策略

內容概要 傳統SEO策略主要依賴人工經驗與基礎工具進行關鍵詞布局,存在效率低、覆蓋維度單一等痛點。而AI技術的介入,使關鍵詞優化從靜態詞庫匹配轉向動態語義網絡構建。通過自然語言處理(NLP)與深度學習模型,AI不僅能…

【Unity】 組件庫分類詳解

1?? Audio(音頻組件) 用于處理游戲中的聲音。 Audio Source 讀音[???di?? ?s??s],音頻源組件,用于播放音頻文件,可設置音量、Pitch、循環播放等屬性,是音頻播放的核心組件。 Audio Listener 讀音…

【區塊鏈】區塊鏈技術介紹

引言 區塊鏈技術自2008年中本聰提出比特幣概念以來,逐漸從加密貨幣的底層技術演變為一場顛覆傳統信任機制的全球性革命。它不僅重塑了金融體系,更在物流、醫療、政務等領域展現出巨大潛力。本文將用通俗易懂的語言,結合實例與原理&#xff0c…

MySQL零基礎入門:Ubuntu環境安裝與操作精解

知識點1【數據庫】 數據的存儲方式,我們之前學的,從變量,數組,鏈表,最后到文件,文件之上,便是數據庫,而我們要介紹的MySQL就是數據庫的關系數據庫中的其中一種。 1、數據庫 本質&…

力扣——23合并升序鏈表

目錄 1:題目描述: 2.算法思想: 3.代碼展示: 1:題目描述: 給你一個鏈表數組,每個鏈表都已經按升序排列。 請你將所有鏈表合并到一個升序鏈表中,返回合并后的鏈表。 示例 1: 輸入&#xff…

AI重構危化品進口清關:一場效率與安全的雙重革命

在全球化工產業鏈深度捆綁的今天,每年超過3億噸危險化學品通過中國各大口岸流入國內市場。這些支撐著新能源電池、半導體材料等戰略產業的“工業血液”,其進口清關流程卻長期困于效率與安全的兩難困境:人工審核單據平均耗時72小時&#xff0c…

牛客網題解 | 棧的壓入、彈出序列

棧的壓入、彈出序列 一、題目鏈接二、題目三、算法原理:用一個棧模擬入棧出棧的過程四、編寫代碼 一、題目鏈接 棧的壓入、彈出序列 二、題目 三、算法原理:用一個棧模擬入棧出棧的過程 思路:用一個棧模擬入棧出棧的過程,模擬出…

使用CubeMX新建DMA工程——存儲器到存儲器模式

目錄 1、新建板級支持包 2、修改main.c 3、程序流程 4、問題 新建工程的基本操作步驟參考這里: 【【野火】STM32 HAL庫開發實戰指南 教學視頻 手把手教學STM32全系列 零基礎入門CubeMXHAL庫,基于野火全系列STM32開發板】 https://www.bilibili.com/…

HTML5 新增的主要標簽整理

一、語義化標簽&#xff08;讓網頁結構更清晰&#xff09; 1. <header> 和 <footer> 定義&#xff1a;表示網頁的「頂部區域」和「底部區域」。場景&#xff1a; <header>&#xff1a;放 Logo、導航欄、搜索框。<footer>&#xff1a;放版權信息、聯系…

Mysql數據庫高可用解決方案-Mysql Router

目錄 一.MySQL Router介紹 1. 什么是 MySQL Router&#xff1f; 2. MySQL Router 的主要用途 3. MySQL Router 的工作原理 4. MySQL Router 的核心組件 5. MySQL Router 的部署和配置 6. MySQL Router 的優勢 7. 注意事項 8. MySQL Router 與其他工具的對比 9. 總結 …

【學習筆記】機器學習(Machine Learning) | 第六周|過擬合問題

機器學習&#xff08;Machine Learning&#xff09; 簡要聲明 基于吳恩達教授(Andrew Ng)課程視頻 BiliBili課程資源 文章目錄 機器學習&#xff08;Machine Learning&#xff09;簡要聲明 摘要過擬合與欠擬合問題一、回歸問題中的過擬合1. 欠擬合&#xff08;Underfit&#x…

當算力遇上堵車:AI如何讓城市血管不再“血栓”?

目錄 一、算力治堵的“外科手術” 二、算力治堵的“內科檢查” 三、算力治堵的“中醫調理” 治堵如治水,算力是新時代的“大禹” “堵車”是每個大城市的通病,但鮮少有人意識到:交通擁堵的根源并非車輛過多,而在于車速過慢,不是因為堵車才慢,而是因為慢才堵車。中國工…

VM虛擬機安裝CentOS7.9

目錄 1.下載CentOS7.9 2.VM虛擬機選擇自定義&#xff0c;然后一直傻瓜式下一步 3.選擇編輯虛擬機設置&#xff0c;然后選擇剛剛下載的ISO 4.輸入 ip addr 獲取ip地址 5.用Xshell連接 1.下載CentOS7.9 鏈接&#xff1a;https://pan.baidu.com/s/1kW2gGWnbcjNtq4kz46LKVw?p…

文本解析到大模型應用

文本解析到到大模型應用 一、背景 最近接到一個比較惡心的工作&#xff0c;之前有個同事將很多個小的文檔整合到了一個大文檔中&#xff0c;同時暴露出一個新的問題&#xff0c;大的文檔雖然查找問題比較方便但是維護起來較為麻煩&#xff0c;所以需要將大的文檔按照標題拆分…

AWS虛擬專用網絡全解析:從基礎到高級實踐

導語 AWS虛擬專用網絡是連接企業本地數據中心與AWS云環境的關鍵橋梁。本文將深入探討AWS VPN的核心概念、配置方法、最佳實踐以及常見問題解決方案,助您構建安全、可靠的混合云網絡架構。 一、AWS VPN概述 1. 定義 AWS VPN是一種網絡服務,允許用戶通過加密隧道將本地網絡…

【含文檔+PPT+源碼】基于微信小程序的校園快遞平臺

項目介紹 本課程演示的是一款基于微信小程序的校園快遞平臺&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含&#xff1a;項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套系統 3.該項目附帶…