」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何有效地從Python清單中刪除重複的字典?

如何有效地從Python清單中刪除重複的字典?

發佈於2024-11-07
瀏覽:986

How to Efficiently Remove Duplicate Dictionaries from a Python List?

Python 清單中的獨特字典

字典清單在 Python 應用程式中很常見。然而,管理重複的字典可能具有挑戰性。本文討論如何有效地刪除重複項並取得唯一字典清單。

考慮字典列表:

L = [
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 2, 'name': 'hanna', 'age': 30}
]

解決問題

要刪除字典列表中的重複項,一種簡單的方法是迭代列表並將每個字典與其他字典進行比較。然而,對於大型列表,此過程的計算成本可能很高。

使用臨時字典

更有效的解決方案利用臨時字典來處理重複資料刪除。字典的鍵設定為每個字典的 id 字段,值設定為字典本身。此操作有效地過濾掉重複項,因為每個唯一 id 只對應一個字典條目。

檢索唯一字典

填入臨時字典後,值(其中代表唯一的字典)可以使用values()方法檢索。

Python實作

Python 2.7:

{v['id']:v for v in L}.values()
Python 2.7:

{v['id']:v 代表L 中的v}.values()
{v['id']:v for v in L}.values()
Python 3:

list({v
dict((v['id'],v) for v in L).values()

Python 2.5/2.6:

{v['id']:v for v in L}.values()
dict((v['id' ],v) for v in L).values()

這些簡潔的解決方案產生了一系列獨特的字典:

How to Efficiently Remove Duplicate Dictionaries from a Python List?

[ {'id': 1, '姓名': '約翰', '年齡': 34}, {'id': 2, '姓名': '漢娜', '年齡': 30} ]

這種方法透過利用臨時字典來識別和提取唯一的字典值,從而有效地刪除重複項。

最新教學 更多>
  • 如何建立人力資源管理解決方案
    如何建立人力資源管理解決方案
    1. Understanding the Basics of Frappe and ERPNext Task 1: Install Frappe and ERPNext Goal: Get a local or cloud-based instance of ERP...
    程式設計 發佈於2024-11-07
  • 從週五黑客到發布:對創建和發布開源專案的思考
    從週五黑客到發布:對創建和發布開源專案的思考
    从周五补丁破解到发布:对创建和发布开源项目的思考 这是针对初学者和中级开发人员的系列的一部分,通过将他们的想法作为开源项目发布或引起兴趣。 这些想法是有偏见的和个人的。计划发布更多文章。通过分享一些思考,我希望能启发你做自己的项目 思考(此) 作为 Java 开发人员学习 Go l...
    程式設計 發佈於2024-11-07
  • 可以使用 constexpr 在編譯時確定字串長度嗎?
    可以使用 constexpr 在編譯時確定字串長度嗎?
    常數表達式最佳化:可以在編譯時確定字串長度嗎? 在最佳化程式碼的過程中,開發人員嘗試計算使用遞​​歸函數在編譯時計算字串文字的長度。此函數逐字元計算字串並傳回長度。 初步觀察:該函數似乎按預期工作,在運行時返回正確的長度並產生表明計算發生在編譯時的彙編程式碼。這就提出了一個問題:是否保證length...
    程式設計 發佈於2024-11-07
  • 在 Raspberry Pi 上執行 Discord 機器人
    在 Raspberry Pi 上執行 Discord 機器人
    Unsplash 上 Daniel Tafjord 的封面照片 我最近完成了一个软件工程训练营,开始研究 LeetCode 的简单问题,并觉得如果我每天都有解决问题的提醒,这将有助于让我负起责任。我决定使用按 24 小时计划运行的不和谐机器人(当然是在我值得信赖的树莓派上)来实现此操作,该机器人将执...
    程式設計 發佈於2024-11-07
  • 解鎖 JavaScript 的隱藏寶石:未充分利用的功能可提高程式碼品質和效能
    解鎖 JavaScript 的隱藏寶石:未充分利用的功能可提高程式碼品質和效能
    In the ever-evolving landscape of web development, JavaScript remains a cornerstone technology powering countless large-scale web applications. While...
    程式設計 發佈於2024-11-07
  • 為什麼透過非常量指標修改「const」變數看起來有效,但實際上並沒有改變它的值?
    為什麼透過非常量指標修改「const」變數看起來有效,但實際上並沒有改變它的值?
    透過非常量指標修改 const在 C 中,const 變數一旦初始化就無法修改。但是,在某些情況下,const 變數可能會被更改。考慮以下代碼:const int e = 2; int* w = (int*)&e; // (1) *w = 5; ...
    程式設計 發佈於2024-11-07
  • Android - 將 .aab 檔案上傳到 Play 商店時出錯
    Android - 將 .aab 檔案上傳到 Play 商店時出錯
    如果您遇到此錯誤,請按照以下步驟操作以確保與您的套件名稱和簽署金鑰保持一致: 確保 app.json 檔案中的套件名稱與您第一次上傳 .aab 檔案時所使用的套件名稱相符。 "android": { "permissions":["CAMERA","READ_EXTERNAL_STO...
    程式設計 發佈於2024-11-07
  • 如何使用 PHP 將 HTML 轉換為 PDF
    如何使用 PHP 將 HTML 轉換為 PDF
    (適用於 Windows 的指南。不適用於 Mac 或 Linux) (圖片來源) 在 PHP 中將 HTML 轉換為 PDF 的方法不只一種。您可以使用Dompdf或Mpdf;但是,這兩個庫的執行方式有所不同。 注意:本文中並未包含所有解決方案。 要使用這兩個函式庫,您將需要 Composer...
    程式設計 發佈於2024-11-07
  • C++ 會擁抱垃圾收集嗎?
    C++ 會擁抱垃圾收集嗎?
    C 中的垃圾收集:實現和共識的問題C 中的垃圾收集:實現和共識的問題雖然有人建議C 最終會包含垃圾收集器,但它仍然是爭論和持續發展的主題。要理解其中的原因,我們必須深入研究迄今為止阻礙其納入的挑戰和考慮因素。 實現複雜性在 C 中加入隱式垃圾收集是一個非-瑣碎的任務。該語言的低級性質和對指針的廣泛支...
    程式設計 發佈於2024-11-07
  • 如何有條件地刪除 MySQL 中的欄位?
    如何有條件地刪除 MySQL 中的欄位?
    使用 MySQL ALTER 進行條件列刪除使用 MySQL ALTER 進行條件列刪除MySQL 中的 ALTER 指令提供了一種從表中刪除列的簡單方法。但是,當指定列不存在時,其傳統語法 (ALTER TABLE table_name DROP COLUMN column_name) 會引發錯誤...
    程式設計 發佈於2024-11-07
  • 你應該了解的現代 CSS 樣式 4
    你應該了解的現代 CSS 樣式 4
    TL;DR: 本博客使用代码示例来探索 Web 开发的五种最佳 CSS 样式和功能:容器查询、子网格、伪类、逻辑属性和实验室颜色空间。它们增强响应能力、简化布局并提高设计一致性。 层叠样式表 (CSS) 是一种众所周知的用于设计网页样式的语言。使用 CSS,您可以通过添加空格来自定义 HTML 元素...
    程式設計 發佈於2024-11-07
  • 箭頭函數或父作用域何時定義函數的參數?
    箭頭函數或父作用域何時定義函數的參數?
    ES6 箭頭函數中的參數:官方說明在 ES6 箭頭函數中,arguments 關鍵字的行為一直是爭論的話題。一些瀏覽器和平台(例如 Chrome、Firefox 和 Node)偏離了最初的 TC39 建議,引發了對該規範正確解釋的質疑。 根據官方 ES6 規範,箭頭函數沒有其自身的定義。自己的參數在...
    程式設計 發佈於2024-11-07
  • 根據您提供的內容,以下是一些採用問題格式的潛在文章標題:

* 載入資料本地內文件存取被拒絕:如何排除和修復錯誤? 
* 為什麼要載入資料LOCA
    根據您提供的內容,以下是一些採用問題格式的潛在文章標題: * 載入資料本地內文件存取被拒絕:如何排除和修復錯誤? * 為什麼要載入資料LOCA
    LOAD DATA LOCAL INFILE 存取被錯誤拒絕:不允許使用的命令當利用MySQL 的LOAD DATA INFILE 執行PHP 腳本時,它可能會遇到錯誤“用戶訪問被拒絕...(使用密碼:是)”。常見的解決方法是切換到 LOAD DATA LOCAL INFILE,儘管這可能會導致同一...
    程式設計 發佈於2024-11-07
  • 如何在 Python 中檢查文字檔是否為空?
    如何在 Python 中檢查文字檔是否為空?
    確定文字檔案是否為空在程式設計領域,通常需要確定特定檔案是否包含任何資料或無效。本文深入探討了這樣一個問題:「我們如何確定文字檔案是否為空?」Python 作為一種多功能程式語言,為這個問題提供了一個簡單的解決方案。透過利用 os.stat() 函數,我們可以檢索有關檔案的屬性數組,包括其大小。 查...
    程式設計 發佈於2024-11-07
  • 在 MySQL 中儲存 IPv6 位址的最佳方式是什麼?
    在 MySQL 中儲存 IPv6 位址的最佳方式是什麼?
    在MySQL 中儲存IPv6 位址:DECIMAL(39,0) 與VARBINARY(16)當面臨儲存IPv6 的挑戰時對於MySQL 中的位址,開發人員通常會考慮兩個選項:DECIMAL(39,0) 和2*BIGINT。雖然兩者各有優點,但出現了較以前的方法更具優勢的新解決方案。 DECIMAL(...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3