Python 3.x 比较两个字典列表,如果存在键和值,则从列表中删除字典

Python 3.x 比较两个字典列表,如果存在键和值,则从列表中删除字典,python-3.x,list,dictionary,Python 3.x,List,Dictionary,基于以下两个字典列表,如何基于列表2中的键(“名称”)和值删除列表1中的字典 list1 = [{'name':'john','age':'12','gender':'male'}, {'name':'sam', 'age':'11','gender':'male'}, {'name':'tom', 'age':'12','gender':'male'}, {'name':'elsa','age':'14','gender':'female'

基于以下两个字典列表,如何基于列表2中的键(“名称”)和值删除列表1中的字典

list1 = [{'name':'john','age':'12','gender':'male'},
         {'name':'sam', 'age':'11','gender':'male'},
         {'name':'tom', 'age':'12','gender':'male'},
         {'name':'elsa','age':'14','gender':'female'},
         {'name':'juhi','age':'13','gender':'female'}]


list2 = 
     [{'name':'tom','gender':'male','status':1,'subject':'english'},             
   {'name':'elsa','gender':'female','status':0,'subject':'english'}]


Expected_list = [{'name':'john','age':'12','gender':'male'},
         {'name':'sam', 'age':'11','gender':'male'},
         {'name':'juhi','age':'13','gender':'female'}]
您可以使用来形成要删除的名称。然后过滤你的第一个列表

使用理解:

names = {x['name'] for x in list2}
expected_list = [x for x in list1 if x['name'] not in names]
使用功能性样式:

names = set(map(lambda x: x['name'], list2))
expected_list = list(filter(lambda x: x['name'] not in names, list1))