Мне нужно решить проблему с вычислением значений дубликатов с последующим удалением дубликатов.
Мне нужен наиболее эффективный шаблон для суммирования значений внутри кортежей и последующего удаления использованного дубликата.
(name, id, age, count)
facts = [('john', 1, 22, 1),('smit', 2, 17, 1),('john', 1, 22, 2),('nick', 3, 43, 1),('john', 1, 22, 1)]
from operator import itemgetter
def sum_and_sort_facts(self, facts:list):
if len(facts) <= 1:
return facts
buffer_list = []
for i, f in enumerate(facts):
if buffer_list and f[1] in [x[1] for x in buffer_list]:
continue
for ic, fc in enumerate(facts):
if i == ic:
continue
if f[1] == fc[1]:
buffer_list.append((f[0], f[1], f[2], f[3] + fc[3]))
buffer_list.append(f)
return sorted(buffer_list, key=itemgetter(3), reverse=True)
Я хочу получить:
факты = [(«Джон», 1, 22, 4), («Смит», 2, 17, 1), («Ник», 3, 43, 1)]