Подтвердить что ты не робот

Поиск суммы в вложенном списке с использованием лямбда-функции

У меня есть структура данных, аналогичная этой

table = [
    ("marley", "5"),
    ("bob", "99"),
    ("another name", "3")
]

Что бы я хотел сделать, чтобы получить сумму 2-го столбца (5 + 99 + 3) функционально следующим образом:

total = sum(table, lambda tup : int(tup[1]))

Это будет аналогичный синтаксис функции python sorted, но это не так, как вы бы использовали функцию python sum.

Какой пифонический/функциональный способ подвести итоги второго столбца?

4b9b3361

Ответ 1

Один подход заключается в использовании выражения генератора:

total = sum(int(v) for name,v in table)

Ответ 2

уменьшить может помочь

total = reduce(lambda x,y:x+int(y[1]), table,0)

Ответ 3

Если вы хотите использовать лямбда, это должно решить следующее:

total = sum(map(lambda x: int(x[1]), table))

Ответ 4

sum(map(int,zip(*table)[-1]))

- один из способов сделать это... есть много вариантов, однако

Ответ 5

Вы также можете получить значения в словаре:

total = sum(map(int, dict(table).values())

Это может быть немного неясным.