怎么把 list1 和 list2 中包含的重复字典去除,合并生成一个新的 list_all?
威尼斯人线上娱乐官网
威尼斯人线上娱乐官网
当前位置 : 威尼斯人线上娱乐官网 > www.vn99.net

怎么把 list1 和 list2 中包含的重复字典去除,合并生成一个新的 list_all?

list1 = [{name: Tom, score:90}, {name: Jack, score:86}, {name: Lisa, score:81}, {name: Bill, score:70}]

list2 = [{name: Jack, score:86}, {name: Bill, score:70}, {name: Bob, score:48}]

怎么把 list1 和 list2 去重合并到一个新的 list_all (保持 score 的顺序),把重合的部分拆分到一个新的 list_new:

list_all = [{name: Tom, score:90}, {name: Jack, score:86}, {name: Lisa, score:81}, {name: Bill, score:70}, {name: Bob, score:48}]

list_new = [{name: Jack, score:86}, {name: Bill, score:70}]

# 获取list_all
list_all = list1 + [item for item in list2 if item not in list1]
# 显式给list_all排序
list_all.sortcmp=lambda x,y: cmpx[score], y[score], reverse=True
# 获取list_new
list_new = [item for item in list2 if item in list1]
# 显式给list_new排序
list_new.sortcmp=lambda x,y: cmpx[score], y[score], reverse=True
set1 = set[frozenseti.items for i in list1]
set2 = set[frozenseti.items for i in list2]
list_all = sortedset1|set2,key = lambda k:dictk[score],reverse = True
list_new = sortedset1&set2,key = lambda k:dictk[score],reverse = True

set 不能处理非hashable数据, 会报错的, 参见三楼的frozenset

listsetlist1.addlist2

该答案已被忽略,原因:不符合答题规范 - 内容不是答案,可用评论、投票替代

栏目列表

广告位

威尼斯人线上娱乐官网