from collections import OrderedDict
from itertools import groupby
_map = {'character': 'letter', 'integer': 'number'}
l = [OrderedDict([('type', k), (_map[k], [d[_map[k]] for d in g])]) for k,
    g in groupby(lst, lambda x: x['type'])]
print(l)
Combine several dictionaries based on a common key value into one dictionary