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}]
4 回答

拉丁的傳說
TA貢獻(xiàn)1789條經(jīng)驗 獲得超8個贊
# 獲取list_all
list_all = list1 + [item for item in list2 if item not in list1]
# 顯式給list_all排序
list_all.sort(cmp=lambda x,y: cmp(x['score'], y['score']), reverse=True)
# 獲取list_new
list_new = [item for item in list2 if item in list1]
# 顯式給list_new排序
list_new.sort(cmp=lambda x,y: cmp(x['score'], y['score']), reverse=True)

開心每一天1111
TA貢獻(xiàn)1836條經(jīng)驗 獲得超13個贊
set1 = set([frozenset(i.items()) for i in list1])
set2 = set([frozenset(i.items()) for i in list2])
list_all = sorted(set1|set2,key = lambda k:dict(k)['score'],reverse = True)
list_new = sorted(set1&set2,key = lambda k:dict(k)['score'],reverse = True)
添加回答
舉報
0/150
提交
取消