Python で複数の辞書型リストを一つに結合したい


共通のキーidがある２つの辞書型リストで、辞書内のidが共通のものは辞書をマージ  
片方にキーが存在しないものは処理をせず、期待する値を求めたいです。

[code]

    a = [{'id': 1, 'add': 'add'}, {'id': 3, 'add': 'add'}]
    b = [{'id': 1, 'name':'aaa'}, {'id': 2, 'name': 'bbb'}, {'id': 3, 'name': 'ccc'}]
    
[/code]

期待する値

[code]

    c = [{'id': 1, 'name':'aaa', 'add': 'addd'}, {'id': 2, 'name': 'bbb'}, {'id': 3, 'name': 'ccc', 'add': 'add'}]
    
[/code]




以下は `setdefault()` を使う方法です。

[code]

    d = {}
    for item in (a + b):
      d.setdefault(item['id'], {}).update(item)
    c = list(d.values())
    
    print(c)
    =>
    [{'id': 1, 'add': 'add', 'name': 'aaa'},
     {'id': 2, 'name': 'bbb'},
     {'id': 3, 'add': 'add', 'name': 'ccc'}]
    
[/code]

