两个dict列表的交集 - Python

Nis*_*ish -3 python dictionary list-comprehension list

我有两个dict列表

listA = [{'id': 'abc', 'key1': '542696d8485b'}]
listB = [{'id': 'abc', 'key1': '542696d8485b'}, {'id': 'def', 'key1': '27348628grn'}]
Run Code Online (Sandbox Code Playgroud)

我想提取 listC = [{'id': 'abc', 'key1': '542696d8485b'}]

即我想找到基于'id'字段的交集(基于任何一个字段,假设列表中的公共项完全相同).建议我一些有效的pythonic方式...

怎么样的

listA_set = set(item['id'] for item in listA)
listB_set = set(item['id'] for item in listB)
listC_set = listA_set & listB_set
listC = {item:listA[item] for item in listC_set}
Run Code Online (Sandbox Code Playgroud)

ssh*_*124 7

为什么不使用列表理解:

listA = [{'id': 'abc', 'key1': '542696d8485b'}]
listB = [{'id': 'abc', 'key1': '542696d8485b'}, {'id': 'def', 'key1': '27348628grn'}]

print [i for i in listA for j in listB if i['id']==j['id']]
Run Code Online (Sandbox Code Playgroud)