通过另一个字典列表中的键更新字典列表

MrO*_*Sir 0 python dictionary list

我有两个字典列表:

a = [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}]
b = [{'id': 1, 'name': 'test'}, {'id': 2, 'name': 'test'}, {'id': 3, 'name': 'test'}, {'id': 4, 'name': 'test'}, {'id': 5, 'name': 'test'}]
Run Code Online (Sandbox Code Playgroud)

我需要使用by key的字典中的akey更新字典。我预期的结果:'name'b'id'

a = [{'id': 1, 'name': 'test'}, {'id': 2, 'name': 'test'}, {'id': 3, 'name': 'test'}, {'id': 4, 'name': 'test'}]
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

Ala*_* T. 5

您应该首先在 list 中创建字典的“索引” b,然后可以a使用列表理解更新列表:

ib = { d["id"]:d for d in b }
a  = [ {**d,**ib.get(d["id"],{})} for d in a ]
Run Code Online (Sandbox Code Playgroud)