"Flattening" a list of dictionaries
finalMap = {}
for d in fruitColourMapping:
finalMap.update(d)
{k: v for d in fruitColourMapping for k, v in d.items()}
Rather than deconstructing and reconstructing, just copy and update:
final_map = {}
for fruit_color_definition in fruit_color_mapping:
final_map.update(fruit_color_definition)
Why copy at all?
In Python 3, you can use the new ChainMap
:
A ChainMap groups multiple dicts (or other mappings) together to create a single, updateable view.
The underlying mappings are stored in a list. That list is public and can accessed or updated using the maps attribute. There is no other state. Lookups search the underlying mappings successively until a key is found. In contrast, writes, updates, and deletions only operate on the first mapping.
All you need is this (do change the names to abide by Python naming conventions):
from collections import ChainMap
fruit_colour_mapping = [{'apple': 'red'}, {'banana': 'yellow'}]
final_map = ChainMap(*fruit_colour_mapping)
And then you can use all the normal mapping operations:
# print key value pairs:
for element in final_map.items():
print(element)
# change a value:
final_map['banana'] = 'green' # supermarkets these days....
# access by key:
print(final_map['banana'])