LINUX.ORG.RU

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

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

Так еще можно (третий питон).

xs = [(0,10.8),(1,8.2),(2,0.3)]
ys = [(0,0.4),(3,20.2),(2,0.3)]

# словарь с просуммированными значениями
sum_dict = {x[0]: x[1] + y[1] for x in xs for y in ys if x[0] == y[0]}

# объединяем исходные словари и словарь с просуммированными значениями слева направо
result_dict = {**dict(xs), **dict(ys), **sum_dict}

# готово, вы великолепны! (и не сломали при этом мозг)
result = [(k, v) for k,v in result.items()]

# ах да, сортировка
sorted_result = sorted(result, key=lambda x: x[1], reverse=True)
sorted_result
[(3, 20.2), (0, 11.200000000000001), (1, 8.2), (2, 0.6)]

Исправление Nervous, :

Так еще можно (третий питон).

xs = [(0,10.8),(1,8.2),(2,0.3)]
ys = [(0,0.4),(3,20.2),(2,0.3)]

# словарь с просуммированными значениями
sum_dict = {x[0]: x[1] + y[1] for x in xs for y in ys if x[0] == y[0]}

# объединяем исходные словари и словарь с просуммированными значениями слева направо
result_dict = {**dict(xs), **dict(ys), **sum_dict}

# готово, вы великолепны! (и не сломали при этом мозг)
result = [(k, v) for k,v in result.items()]
result
[(0, 11.200000000000001), (1, 8.2), (2, 0.6), (3, 20.2)]

Исправление Nervous, :

Так еще можно (третий питон).

xs = [(0,10.8),(1,8.2),(2,0.3)]
ys = [(0,0.4),(3,20.2),(2,0.3)]

# словарь с просуммированными значениями
sum_dict = {x[0]: x[1] + y[1] for x in xs for y in ys if x[0] == y[0]}
# объединяем исходные словари и словарь с просуммированными значениями слева направо
result_dict = {**dict(xs), **dict(ys), **sum_dict}

# готово, вы великолепны! (и не сломали при этом мозг)
result = [(k, v) for k,v in result.items()]
result
[(0, 11.200000000000001), (1, 8.2), (2, 0.6), (3, 20.2)]

Исправление Nervous, :

Так еще можно (третий питон).

xs = [(0,10.8),(1,8.2),(2,0.3)]
ys = [(0,0.4),(3,20.2),(2,0.3)]

sum_dict = {x[0]: x[1] + y[1] for x in xs for y in ys if x[0] == y[0]}
result_dict = {**dict(xs), **dict(ys), **sum_dict}
result = [(k, v) for k,v in result.items()]

result
[(0, 11.200000000000001), (1, 8.2), (2, 0.6), (3, 20.2)]

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

Так еще можно (третий питон).

xs = [(0,10.8),(1,8.2),(2,0.3)]
ys = [(0,0.4),(3,20.2),(2,0.3)]

sum_dict = {x[0]: x[1] + y[1] for x in xs for y in ys if x[0] == y[0]}
result = {**dict(xs), **dict(ys), **sum_dict}
result_dict = {**dict(xs), **dict(ys), **sum_dict}
result = [(k, v) for k,v in result.items()]

result
[(0, 11.200000000000001), (1, 8.2), (2, 0.6), (3, 20.2)]