”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何有效地从Python列表中删除重复的字典?

如何有效地从Python列表中删除重复的字典?

发布于2024-11-07
浏览:762

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 3:

list({v['id']:v for v in L}.values())
:v 为 L 中的 v}.values())

Python 2.5/2.6:

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

这些简洁的解决方案产生了一系列独特的字典:
dict((v['id'],v) for v in L).values()
[ {'id': 1, '姓名': '约翰', '年龄': 34}, {'id': 2, '姓名': '汉娜', '年龄': 30} ]

这种方法通过利用临时字典来识别和提取唯一的字典值,从而有效地删除重复项。

最新教程 更多>
  • 如何覆盖 PHP 的 `mail()` 函数中的信封返回地址?
    如何覆盖 PHP 的 `mail()` 函数中的信封返回地址?
    如何在 PHP Mail 中覆盖信封返回地址为了解决使用 PHP 的 mail() 函数设置信封返回地址的问题,这个答案提供了一个简单的解决方案。mail() 函数接受可选的第四个和第五个参数。虽然第四个参数用于设置标头,但第五个参数可用于将选项直接传递给底层的 sendmail 命令。通过在第五个...
    编程 发布于2024-11-07
  • 科技观察 #1
    科技观察 #1
    大家好,这是我上周的技术手表,其中包含很多 #react、一点 #html、一些 #css 和 #npm。 ? https://www.totaltypescript.com/how-to-create-an-npm-package 如何创建 NPM 包 创建、测试和发布 NPM 包(从初始化到发布...
    编程 发布于2024-11-07
  • mysqli_fetch_array() 何时显示错误“期望参数 1 为 mysqli_result,给定布尔值”?
    mysqli_fetch_array() 何时显示错误“期望参数 1 为 mysqli_result,给定布尔值”?
    mysqli_fetch_array() 期望 MySQLi 结果,而不是布尔值在给定的 PHP 代码中,错误“mysqli_fetch_array() 期望参数 1 为mysqli_result, boolean Give" 表示使用 mysqli_query() 的查询执行失败,它返回...
    编程 发布于2024-11-07
  • 子集和问题的 PHP 程序
    子集和问题的 PHP 程序
    子集和问题是计算机科学和动态规划中的经典问题。给定一组正整数和一个目标和,任务是确定是否存在给定集合的子集,其元素之和等于目标和。 子集和问题的PHP程序 使用递归解决方案 例子 <?php // A recursive solution for the subset sum problem ...
    编程 发布于2024-11-07
  • JavaScript 数组方法:综合指南
    JavaScript 数组方法:综合指南
    数组是 JavaScript 中最基本的数据结构之一。使用数组,您可以在单个变量中存储多个值。 JavaScript 提供了许多内置方法来操作数组,使它们具有令人难以置信的通用性。在这篇文章中,我们将探讨所有内置数组方法以及如何在 JavaScript 项目中有效地使用它们。 核心方...
    编程 发布于2024-11-07
  • 高级 T:依赖参数、推断联合以及 Twitter 上的健康交互。
    高级 T:依赖参数、推断联合以及 Twitter 上的健康交互。
    每次我用 TypeScript 写成 Foo 时,我都会感受到失败的沉重。 在一种情况下,这种感觉特别强烈:当函数采用的参数取决于哪个 "mode" 处于活动状态时。 通过一些示例代码更清晰: type Provider = "PROVIDER A" | "PR...
    编程 发布于2024-11-07
  • 如何创建人力资源管理解决方案
    如何创建人力资源管理解决方案
    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_STORAGE...
    编程 发布于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 添加隐式垃圾收集是一个非-琐碎的任务。该语言的低级性质和对指针的广泛支持带来了重大的技术障碍。实施问题的范...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3