python去重列表中相同的字典元素

本文探讨了如何在Python中去除列表中重复的字典元素,指出使用集合直接去重会因字典不可哈希而引发错误。文章提供了两种解决方案:一是通过将字典转化为元组,二是利用哈希表思想。同时,文章分析了两种方法的适用场景,强调在处理大量数据时需考虑效率和复杂度。
摘要由CSDN通过智能技术生成

python去重列表中相同的字典元素

一.知识点

​ data_list = [{“a”: 1, “b”: 2}, {“a”: 2, “b”: 3}, {“a”: 1, “b”: 2}, {“a”: 3, “b”: 4}, {“a”: 2, “b”: 3}, {“a”: 1, “b”: 2}]

​ 萌新会犯的错误:使用集合来去重

​ print(set(data_list))

​ 会报错,因为字典是不可哈希的类型,不能直接用于集合的创建。如果要将字典元素去重,可以先将字典转化为元组再使用集合去重。

​ 在Python中,集合是可变的数据类型,因此不是可哈希的。集合的元素必须是可哈希的类型。如果集合中有不可哈希的元素,例如列表或字典,会引发TypeError错误。

​ 在 Python 中,可哈希的类型包括:

​ 不可变类型:例如数字、字符串、元组等,它们一旦创建,其值就不能被修改;
​ 可变类型但是不包含可变类型的元素:例如 frozenset 等;
​ 用户自定义的对象,只要实现了 hasheq 方法,使得对象在比较时可哈希即可。

需要注意的是,可哈希的类型必须实现了 hash 方法,使得相同的值具有相同的哈希值,这是哈希表能够正确工作的前提。

二.代码
|代码1

那就创建一个新列表,循环遍历嵌套着字典数据的列表,判断字典元素是否存在,若不在,就添加进去

def list_dict_duplicate_removal1(data_list):
    unique_list = []
    for data in data_list:
        if data not in unique_list:
            unique_list.append(data)
    return unique_list
|问题

当我在编写项目时,数据集比较大,有19万多行,如下图,元素即字典的键值对数量有14对

在这里插入图片描述

|代码2
	当数据集较大时,每次都需要遍历整个结果列表,查看当前字典是否已经存在于结果列表中,因此时间复杂度很高,导致程序运行变慢。一个更好的解决方案是使用哈希表来快速判断字典是否已经存在于结果列表中,使用哈希表实现去重的示例代码:
def
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值