python 去除字典列表中的重复字典

介绍了两种去除Python字典列表中重复字典的方法:通过转换为tuple集合去重,以及利用lambda匿名函数和字典的键唯一性进行去重。详细解释了每种方法的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种:

li = [{'a': 1}, {'b': 2}, {'a': 1}]

li = [dict(t) for t in set([tuple(d.items()) for d in li])]

结果为:

[{'a': 1}, {'b': 2}]

第一步把 dict 列表转成 tuple 列表,

[tuple(d.items()) for d in li])

[(('a', 1),), (('b', 2),), (('a', 1),)]

然后外面加个 set() 去重, 最后把去重后的 tuple set 转成 dict list

第二种:

python 字典中 重复值去除

tuple_r_dict = lambda _dict: dict(val[::-1] for val in _dict.items()) # Python3.x

tuple_r_dict(tuple_r_dict(li))

1、lambda 匿名函数,冒号前为参数,个数可以有0个或多个,冒号右边为返回值

lambda [arg1 [, agr2,…argn]] : expression

tuple_r_dict = lambda _dict: dict(val[::-1] for val in _dict.items())

这句表明创建一个匿名函数

  • 输入:_dict
  • 输出:dict(val[::-1] for val in _dict.items())

2、 _dict.items()

dict.items()返回字典的(键,值)元组对的列表
dic={7:'d',9:'s',5:'a'}
print('dic:',dic)
print('dic.items():',dic.items())

#输出
#dic: {9: 's', 5: 'a', 7: 'd'}
#dic.items(): dict_items([(9, 's'), (5, 'a'), (7, 'd')])

3、val[::-1]

把元组对顺序对调

1,'A')[::-1]  
=> ('A',1)

[1,2,3,4,5][:4:2] => [1,3] #取列表中的前4个数,步长为2//第一个冒号左右两边代表在这个列表中的截取范围,第二个冒号右边代表截取范围内每2个取一个数

总结:

生成一个匿名函数,函数返回一个字典dict(val[::-1] for val in _dict.items())

_dict.items()先返回原字典的(键,值)元组对列表

val[::-1] for val in _dict.items() 遍历列表,把列表中的每个元组对中两个值位置对调

dict()把列表转变为字典

至此,生成的新字典的键为旧字典的键值,新键值为旧字典的键。利用字典的键唯一性,去除旧字典的重复键值。

再执行一次tuple_r_dict(tuple_r_dict(z)),把键值对再对调回来

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫云云

你的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值