for d in data:
    if d['id1'] not in temp:
        temp[d['id1']] = {}
temp_d = temp[d['id1']]
temp_d['price'] = temp_d.get('price', 0) + int(d['price'])
temp_d.setdefault('colors', set()).add(d['color'])
temp
Объединить значения одного и того же ключа в списке диктов