Introduction
You can merge dict with the | bitwise operator from version 3.9. chaining them, with functools.reduce with operator.or_:
Rough explanation of functools.reduce
functools.reduce(function, iterable[, initializer])
Apply function of two arguments cumulatively to the items of iterable, from left to right, so as to reduce the iterable to a single value
Here are some examples for functools.reduce:
>>> #calculates ((((1+2)+3)+4)+5) which is the sum
>>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
15
>>> # factorial of 5 using reduce
>>> n = 4
>>> reduce(lambda x, y: x*y, range(1,n+1))
24
Answer
Using functools.reduce and operator._or here is the code that I come up with:
import operator
from functools import reduce
result = reduce(operator.or_,list_of_dicts)
pprint.pprint(result)
EDIT: As @KellyBundy commented, my implementation is O(n^2) but using operator.ior and the Optional initializer parameter, we could make it linear.
Implementation:
import operator
from functools import reduce
result = reduce(operator.ior,list_of_dicts,{})
pprint(result)
Output
{'fruit': 'banana',
'color1': '',
'vegetable': 'tomato',
'color2': '',
'dessert': 'ice cream',
'taste': ''}