从 Python 中的字典列表中删除重复项

news2024/11/26 12:24:30

要从字典列表中删除重复项:

  1. 使用字典推导来遍历列表。
  2. 使用每个 id 属性的值作为键,使用字典作为值。
  3. 使用 dict.values() 方法只获取唯一的字典。
  4. 使用 list() 类将结果转换为列表。
list_of_dictionaries = [
    {'id': 1, 'site': 'jiyik.com'},
    {'id': 2, 'site': 'google.com'},
    {'id': 1, 'site': 'jiyik.com'},
]


result = list(
    {
        dictionary['id']: dictionary
        for dictionary in list_of_dictionaries
    }.values()
)

# 👇️ [{'id': 1, 'site': 'jiyik.com'}, {'id': 2, 'site': 'google.com'}]
print(result)

从 Python 中的字典列表中删除重复项

我们使用字典理解来遍历字典列表。

字典理解与列表理解非常相似。

他们对字典中的每个键值对执行一些操作,或者选择满足条件的键值对的子集。

在每次迭代中,我们将当前 id 的值设置为键,将实际字典设置为值。

字典中的键是唯一的,因此任何重复的值都会被删除。

然后我们使用 dict.values() 方法只返回唯一的字典。

dict.values 方法返回字典值的新视图。

my_dict = {'id': 1,  'name': 'jiyik'}

print(my_dict.values())  # 👉️ dict_values([1, 'jiyik'])

最后一步是使用 list() 类将视图对象转换为包含唯一字典的列表。

列表类接受一个可迭代对象并返回一个列表对象。

或者,我们可以使用 for 循环。

使用 for 循环从字典列表中删除重复项

要从字典列表中删除重复项:

  1. 声明一个存储空列表的新变量。
  2. 使用 for 循环遍历字典列表。
  3. 使用 list.append() 方法将非重复字典添加到新列表中。
list_of_dictionaries = [
    {'id': 1, 'site': 'jiyik.com'},
    {'id': 2, 'site': 'google.com'},
    {'id': 1, 'site': 'jiyik.com'},
]


new_list = []

for dictionary in list_of_dictionaries:
    if dictionary not in new_list:
        new_list.append(dictionary)

# 👇️ [{'id': 1, 'site': 'jiyik.com'}, {'id': 2, 'site': 'google.com'}]
print(new_list)

我们使用 for 循环遍历字典列表。

在每次迭代中,我们使用 not in 运算符来检查字典是否不存在于新列表中。

如果满足条件,我们使用 list.append() 方法将字典附加到列表中。

in 运算符测试成员资格。 例如,如果 x 是 l 的成员,则 x in l 的计算结果为 True,否则,它的计算结果为 False

x not in l 返回 x in l 的否定。

list.append() 方法将一个项目添加到列表的末尾。

my_list = ['fql', 'jiyik']

my_list.append('com')

print(my_list)  # 👉️ ['fql', 'jiyik', 'com']

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

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

相关文章

5G NR调制阶数与EVM关系以及对系统SNR要求分析

移动通信技术对数据传输速率要求越来越高。一种提高传输速率的思路是使用更高阶的QAM 调制方式,例如5G NR 的256QAM PDSCH,微波的1024QAM,2048QAM和4096QAM 调制。更高阶的QAM 调制方式对系统也提出了更高的要求。例如某个系统的EVM 测试结果…

微服务+springcloud+springcloud alibaba学习笔记【Hystrix(豪猪哥)的使用】(6/9)

Hystrix(豪猪哥)的使用 6/91、Hystrix熔断器概述2、HyStrix重要概念3、hystrix案例3.1 新建模块 Cloud-provider-hystrix-payment80013.2 创建带降级的order模块 Cloud-comsumer-feign-hystrix-order803.3 配置服务降级:3.3.1 服务降级 Cloud-provider-h…

企业做体系认证要警惕的8大问题,别再被不良认证机构忽悠啦!

企业资质认证要警惕这八大问题 企业资质真的很管用。我们都知道从事任何一个行业都需要准入证明,尤其是招投标企业,企业资质更是投标的准入门槛,并且在投标中还可以为企业加分。 有些资质如ISO三体系是企业必备的资质之一,也是常…

麻了,不要再动不动就BeanUtil.copyProperties

前言 最近项目上要求升级一个工具包hutool的版本,以解决安全漏洞问题,这不升级还好,一升级反而捅出了更大的篓子,究竟是怎么回事呢? 事件回顾 我们项目原先使用的hutool版本是5.7.2,在代码中&#xff0c…

Hudi集成Flink-写入方式

文章目录一、CDC 入湖1.1、[开启binlog](https://blog.csdn.net/wuxintdrh/article/details/130142601)1.2、创建测试表1.2.1、创建mysql表1.2.2、将 binlog 日志 写入 kafka1、使用 mysql-cdc 监听 binlog2、kafka 作为 sink表3、写入sink 表1.2.3、将 kakfa 数据写入hudi1、k…

ERTEC200P-2 PROFINET设备完全开发手册(4-2)

4.2 XHIF接口实验 4.2.1写入单片机固件 首先按照下图连接设备 用JLINK 20Pin JTAG连接4 Pin SWD可以采用转接板 单片机的参考程序是用ST的CubeIDE生成的,目前的版本是1.7.0。打开安装后的CubeIDE,在菜单中选择“File->Import“ 选择“Existing Proj…

企业信息化建设都包括哪些方面?

随着大数据技术的发展,时代的发展要求企业转变管理模式、建立信息化管理机制,同时也是提高工作、管理效率,促进企业战略性发展的重要保障。 企业信息化是将信息技术应用于企业发展实践中的一个动态过程,即通过挖掘先进的管理理念…

高可靠多层板制造服务再获认可!华秋荣获创想三维优秀质量奖

4月10日,创想三维2023年度战略供应商大会在惠州成功举办,高可靠多层板制造商华秋出席了本次活动并取得了《优秀质量奖》一奖项。 大会现场,创想三维董事长陈春指出公司的持续发展与供应链高质量的交付息息相关。作为创想三维主力PCB供应商&am…

【亲测有效】更新了WIN11之后 右键无 新建WORD,PPT,EXCEL 选项 问题 解决方案

原本正常的正版系统,在昨天4月自动更新安装之后,发现右键找 不到新建文档了,word,ppt,excel都不见了。 看了网上大神的方法 Win11安装了Office右键没有新建Excel选项怎么办? - 知乎 可以解决一部分 官方解决方案,亲…

李宏毅2021春季机器学习课程视频笔记14-Transformer

Transformer Transformer实际上就是变形金刚,其与Bert实际类似。其实际上就是一个Sequence-to-Sequence的模型,其输出的长度并不是由人为指定,而是由机器自行确定。 Transformer的基本结构,如上图所示,主要由一个Encod…

AS01/AS02/AS03 创建定制屏幕字段

本文简介:在sap标准屏幕上,增加客户定制的屏幕字段。 操作步骤: 1、在创建资产卡片AS01时,界面需要输入客户定制的字段,如下图方框所示 2、查看增强点,事务码:SMOD AIST002 3、创建增强项目…

M1 M2上能安装上Autocad 2024 Mac 中文版吗 autocad m1 m2版本有啦 终于支持Ventura 13x了

AutoCAD是一款强大的工具,适合于各种领域的设计和绘图。它具有二维图形和三维建模功能、多种文件格式支持、自定义命令和样式、批处理和脚本等特点,可以帮助用户实现高质量的设计和建模。同时,还支持云端存储和共享,方便用户随时随…

【Linux】-- 进程概念的引入

目录 硬件 冯诺依曼体系结构 冯诺依曼体系结构推导 重点概念 网络数据流向 软件 操作系统(Operator System - OS) 概念 定位 进程内核数据结构PCB(task_struct) 通过系统调用创建进程-fork初始 fork基本用法 使用if进行分流 查看运行效果 …

Python每日一练(20230417)

目录 1. 最大间距 🌟🌟🌟 2. Z 字形变换 🌟🌟 3. 买卖股票的最佳时机 II 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…

通过Android Studio自制.9.png启动页图片 - uniapp启动界面设置Android启动图片设置

效果图 实现步骤 下载安装JDK 参考Oracle官网: https://www.oracle.com/java/technologies/javase/upgrade.html 再跳转到JavaSE Upgrade下载页面:Java Downloads | Oracle 配置JDK: 假设jdk安装位置是D:\Program Files\Java\jdk-18.0.1.1 …

CDH6.3.2大数据集群生产环境安装(八)之各组件参数调优,yarn参数调优,hdfs参数调优等

yarn资源调优 主要涉及到了ResourceManager、NodeManager这几个概念,相关的优化也要紧紧围绕着这几方面来开展。这里还有一个Container的概念,现在可以先把它理解为运行map/reduce task的容器 28.1. 内存 堆栈等配置  原值  调优值

java并发编程之美第一章并发编程基础(读书笔记)

1–50面 java并发编程基础 什么是线程 进程: 是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位 线程: 是进程的一次执行路径,一个进程至少有一个线程,进程中的多个线程共享进程的资源. 线程是CPU分配的基本单位 栈: 每个线程都有自己的栈资源,用…

02_CCC3.0数字钥匙_SPAKE2+执行流程

02_CCC3.0数字钥匙_SPAKE2执行流程Vehicle OEM Server:派生salt、L和w0;这三个参数需要服务器给到车辆端的,所以需要在服务器事先生成。用于与车辆端的做SPAKE2验证。DK Scrypt(pwd, s, Nscrypt, r, p, dkLen); z0 DK[0 : 320]…

判断环形链表是否有环??返回环形链表的入口点

给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(…

IDEA插件-MavenHapler

1.安装Maven Helper Maven Helper 是 IntelliJ IDEA 中的一个插件,可以帮助您管理 Maven 依赖项。它可以帮助您更容易地删除不再需要的依赖项,查看依赖项的冲突,以及执行其他有关 Maven 依赖项的操作。 打开 IDEA 设置页面: 在插…