python – “join” two list of dictionaries on Id

I have two lists of dictionaries where both have the same “id” key but otherwise different data.

list1 = ({"id":1, "spam": 3, "eggs": 5}, {"id": 2, "spam": 5, "eggs": 7})
list2 = ({"id":1, "knights": 5, "coconuts": 2}, {"id": 2, "knights": 3, "cocounts": 8})

I know I can do a nested loop something like this (I know I can use dict.update as well, but just writing it out as an exampel):

for id in list1:
    for i in list2:
        if id('id') == i('id):
           id('knights') = i('knights')
           id('coconuts') = i('coconuts')

but can anyone tell me the more pythonic or quicker way to do this? matching two lists with millions of rows in each does not practically work this way.

Expected result is:

({"id": 1, "spam": 3, "eggs": 5, "knights": 5, "coconuts": 2}, {"id": 2, "spam": 5, "eggs": 7, "knights": 3, "coconuts": 8})