Код Shaman'а с возвращением списка (упорядоченного).
>>> data = [
... ["name 1", 1],
... ["name 1", 4],
... ["name 1", 2],
... ["name 2", 10],
... ["name 3", 1],
... ["name 3", 3],
... ["name 3", 1],
... ["name 4", 7],
... ["name 4", 1],
... ["name 4", 2],
... ]
>>>
>>> r = {}
>>> o = []
>>> for n, v in data:
... r[n] = r.get(n, 0) + v
... if not o or o[-1] != n:
... o.append(n)
...
>>> out = [(i, r[i]) for i in o]
>>>
>>> print(out)
[('name 1', 7), ('name 2', 10), ('name 3', 5), ('name 4', 10)]
>>>
john123
А во-вторых, что если в строке будет больше двух колонок?
Shaman
Это будет совсем другая история.
Не очень сильно будет код отличаться.
>>> def f(seq):
... return seq
...
>>> lst = [['a', 1, 2], ['b', 3, 4]]
>>>
>>> for i, *t in lst:
... print(i, f(t))
...
a [1, 2]
b [3, 4]
>>>