d = defaultdict(dict)
for l in (l1, l2):
    for elem in l:
        d[elem['index']].update(elem)
l3 = list(d.values())
[{'b': 2, 'c': 4, 'index': 1}, {'b': 3, 'c': 5, 'index': 2}, {'green':
    'eggs', 'index': 3}]
join two lists of dictionaries on a single key