Ответ 1
Один подход заключается в использовании выражения генератора:
total = sum(int(v) for name,v in table)
У меня есть структура данных, аналогичная этой
table = [
("marley", "5"),
("bob", "99"),
("another name", "3")
]
Что бы я хотел сделать, чтобы получить сумму 2-го столбца (5 + 99 + 3) функционально следующим образом:
total = sum(table, lambda tup : int(tup[1]))
Это будет аналогичный синтаксис функции python sorted
, но это не так, как вы бы использовали функцию python sum
.
Какой пифонический/функциональный способ подвести итоги второго столбца?
Один подход заключается в использовании выражения генератора:
total = sum(int(v) for name,v in table)
уменьшить может помочь
total = reduce(lambda x,y:x+int(y[1]), table,0)
Если вы хотите использовать лямбда, это должно решить следующее:
total = sum(map(lambda x: int(x[1]), table))
sum(map(int,zip(*table)[-1]))
- один из способов сделать это... есть много вариантов, однако
Вы также можете получить значения в словаре:
total = sum(map(int, dict(table).values())
Это может быть немного неясным.