from itertools import groupby
a = [{1: 2}, {1: 3}, {2: 5}, {2: 3}]
[{k, max(y[1] for y in g)} # build up the result by recreating the list of maps by taking the keys in the group and map them to the biggest value in the group
for k, g
in groupby((sorted( # group everything together, so that those touples with the same key (=index 0) are in the same group
((k, v) for m in a for k, v in m.items()) # transform the list of maps to a generator of tuples
, key=lambda x: x[0])), key=lambda x: x[0])]
So here I first transform the list of maps to a list of tuples (which makes much more sense, but that is just me), group them together by the key, and afterwards create new maps for each key, by taking the biggest value inside each group.