3 回答

TA贡献1872条经验 获得超3个赞
使用遍历list2检查idwith ids in的列表理解list1:
list1 = [
{'name': "Maria",
'id': "16a",
},
{'name': "Tania",
'id': "13b",
},
{'name': "Steve",
'id': "5a",
}
]
list2 = [
{'name': "Eric",
'id': "16a",
},
{'name': "Mike",
'id': "7b",
},
{'name': "Steve",
'id': "57a",
}
]
list1_ids = [y['id'] for y in list1]
result = [x for x in list2 if x['id'] not in list1_ids]
# [{'name': 'Mike', 'id': '7b'}, {'name': 'Steve', 'id': '57a'}]

TA贡献1898条经验 获得超8个赞
这应该做:
[d2 for d2 in list2 if d2['id'] not in [d1['id'] for d1 in list1]]
输出:
[{'id': '7b', 'name': 'Mike'}, {'id': '57a', 'name': 'Steve'}]

TA贡献2041条经验 获得超4个赞
您也可以使用filter功能来做到这一点:
list1 = [
{"name": "Maria",
"id": "16a",
},
{"name": "Tania",
"id": "13b",
},
{"name": "Steve",
"id": "5a",
}
]
list2 = [
{"name": "Eric",
"id": "16a",
},
{"name": "Mike",
"id": "7b",
},
{"name": "Steve",
"id": "57a",
}
]
IDs = set(value["id"] for value in list1)
output = list(filter(lambda elem: elem["id"] not in IDs, list2))
print(output)
输出:
[{'name': 'Mike', 'id': '7b'}, {'name': 'Steve', 'id': '57a'}]
添加回答
举报