Как сгрупировать дубликаты первого элемента во вложенных списках с просуммировав вторые элементы?

Есть список:

[['var1' 'val1'], ['var2' 'val2'], ['var1' 'val4'], ['var3' 'val1'], ['var4' 'val1'], ['var4' 'val15']]

Необходимо создать список с уникальными var и просуммировав значения val

dump = []
f = open('D:\\python\dm.txt')
f.read(1)
i = 0
for line in f:
    line = line.rstrip("\n")
    line = line.split(' - ', 2)

    print(line[0]+' = '+line[1]+ ' шт')
    for dat in dump:
       if print(dat[0] == line[0]):
            print(line[0])
        #else:
        #dump.append([line[0], line[1]])

    i += 1 
dump.sort()
print(dump)

Должно получится:

 [['var1' 'val1+val4'], ['var2' 'val2'], ['var3' 'val1'], ['var4' 'val1+val15']]

Ответы (3 шт):

Автор решения: Maxim Timakov

Напрашивается использование словаря

# create dictionary
result = {}

for line in f:
  # parse line...
  # skiped
  key, val = line
  
  if key in result:
    result[key] = result[key] + val
  else:
    result[key] = val

print(result)

→ Ссылка
Автор решения: MaxU

исходные данные:

data = \
[['var1', 'val1'],
 ['var2', 'val2'],
 ['var1', 'val4'],
 ['var3', 'val1'],
 ['var4', 'val1'],
 ['var4', 'val15']]

для решения воспользуйтесь itertools.groupby:

from itertools import groupby

res = [[a, "+".join(el[1] for el in b)] 
       for a,b in groupby(sorted(data, key=lambda x: x[0]), 
                          key=lambda x: x[0])]

результат:

In [26]: res
Out[26]:
[['var1', 'val1+val4'],
 ['var2', 'val2'],
 ['var3', 'val1'],
 ['var4', 'val1+val15']]
→ Ссылка
Автор решения: MaxU

Похоже у автора вопроса числовые данные на месте второго элемента вложенных списков:

In [7]: data = \
   ...: [['var1', 11],
   ...:  ['var2', 12],
   ...:  ['var1', 13],
   ...:  ['var3', 14],
   ...:  ['var4', 15],
   ...:  ['var4', 16]]

решение в данном случае будет выглядеть так:

In [8]: res = [[a, sum(el[1] for el in b)]
   ...:        for a,b in groupby(sorted(data, key=lambda x: x[0]),
   ...:                           key=lambda x: x[0])]

результат:

In [9]: res
Out[9]: [['var1', 24], ['var2', 12], ['var3', 14], ['var4', 31]]
→ Ссылка