LINUX.ORG.RU

История изменений

Исправление Novator, (текущая версия) :

Вижу, что быстро, но на втором месте - значит, время тратится на суммирование массивов.

Если так, то самым быстрым будет такой вариант:

def three(a, b):
  c = {}
  for i,v in a:
    c[i] = c.get(i, 0) + v
  for i,v in b:
    c[i] = c.get(i, 0) + v
  return sorted(c.items(), key=lambda x: x[1], reverse=True)

Без суммирования. Без подпрограмм. И поиск по словарю.

Исходная версия Novator, :

Вижу, что быстро, но на втором месте - значит, время тратится на суммирование массивов.

Если так, то самым быстрым будет такой вариант:

def three(a, b):
  c = {}
  for i,v in a:
    c[i] = c.get(i, 0) + v
  for i,v in b:
    c[i] = c.get(i, 0) + v
  return sorted(c.items(), key=lambda x: x[1], reverse=True)

Без суммирования. Без подпрограмм. И поиск по словарю.