Here’s one way to do it:
if not any(d['main_color'] == 'red' for d in a):
# does not exist
The part in parentheses is a generator expression that returns True for each dictionary that has the key-value pair you are looking for, otherwise False.
If the key could also be missing the above code can give you a KeyError. You can fix this by using get and providing a default value. If you don’t provide a default value, None is returned.
if not any(d.get('main_color', default_value) == 'red' for d in a):
# does not exist