Сначала нужно отсортировать, затем itertools.groupby
второе значение.
import itertools
import operator
records = [[2, 3], [3, 3], [5, 4], [1, 4]]
records.sort(key=operator.itemgetter(1))
groups = itertools.groupby(records, key=operator.itemgetter(1))
# groups is now a generator that produces the values:
# (3, [[2, 3], [3, 3]])
# (4, [[5, 4], [1, 4]])
Затем создать список результатов:
result = [[sum(record[0] for record in records), grpname] for grpname, records in groups]