簡體   English   中英

刪除2個列表中的常見字典元素

[英]Remove common dictionary elements that are in 2 lists

我正在嘗試“減去”兩個列表中的公共元素,但是兩個列表中的元素是字典。

例:

list_dict_01 = [{'aaa':123}, {'bbb':234}, {'ccc':234}, {'ddd':456}]
list_dict_02 = [{'bbb':234}, {'ddd':456}]

res = list(set(list_dict_01)^set(list_dict_02))
# Expected output : `[{'aaa':123}, {'ccc':234}]`

但是,當我執行代碼時,出現以下錯誤:

# Error: unhashable type: 'dict'
# Traceback (most recent call last):
#   File "<maya console>", line 4, in <module>
# TypeError: unhashable type: 'dict' # 

我還能采取什么其他方式來獲得想要的結果?

這有效

[item for item in list_dict_01 if not item in list_dict_02]+[item for item in list_dict_02 if not item in list_dict_01]

它與建議的第一個答案相同,只是使用了filter功能:

list_dict_01 = [{'aaa':123}, {'bbb':234}, {'ccc':234}, {'ddd':456}]
list_dict_02 = [{'bbb':234}, {'ddd':456}]

res = list(filter(lambda i: not i in list_dict_01, list_dict_02)) + list(filter(lambda i: not i in list_dict_02, list_dict_01))
print(res)

輸出:

[{'aaa': 123}, {'ccc': 234}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM