d = defaultdict(tuple)
a = [('x', 1), ('x', 2), ('y', 1), ('y', 3), ('y', 4)]
for tup in a:
    d[tup[0]] += tup[1],
[tuple(x for y in i for x in y) for i in list(d.items())]
Список кортежей Python объединяет 2-й элемент с уникальным первым элементом