python字典添加列表_【Python】对字典列表进行去重追加

[TOC]

目标

现有字典列表

#

A = [ {dict1}, {dict2} ]

B = [ {dict3}, {dict2} ]

C = [ {dict3}, {dict4} ]

M = [A,B,C]

X = []

将M去重后的字典放入列表X中,得到X = [{dict1}, {dict2},{dict3}, {dict4}]

难点

字典列表

大家可能一开始会想到使用set()函数转化为集合,自动去重。但是集合是使用hash来计算并去重的,但是字典类型无法使用Hash计算。虽然可以使用类class或者命名元组namedtupe来替换字典,但是这次的场景是无法变更列表的产生源的。

列表无集合操作的方法

列表之间无法使用交并差(&,|,-)的方式的集合计算方法

思路

# json,性能差

data = set([json.dumps(d) for d in data])

data = [json.loads(d) for d in data]

# 这种方式只能对ABC生效,对M还需要再一次循环,玛法

sortedlist = []

for item in listwhichneedssorting:

if item not in sortedlist:

sortedlist.append(item)

# 这种缩短了两行

for i in M:

X.extend(filter(lamda s: s not in X, i))

# 使用extend()而不是append(),因为我们需要拼接的是字典列表,而不是列表的列表

# lamda s: s not in X, M 匿名函数,对i中的元素是否在X中进行判断

# filter() 对上面匿名函数中不满足条件(即重复的字典)进行过滤,返回尚未添加到X中的字典元素列表

# 使用extend()进行追加到X中

标签:dict3,dict2,Python,列表,item,data,字典

来源: http://blog.51cto.com/l0vesql/2346778

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值