我有一个与此类似的数据结构
table = [
("marley", "5"),
("bob", "99"),
("another name", "3")
]
我想做什么,以获得第二列(5 + 99 + 3)的总和在功能上如下:
total = sum(table, lambda tup : int(tup[1]))
这与python函数sorted
的语法类似,但这不是你如何使用python的sum
函数。
总结第二列的pythonic / functional方法是什么?
答案 0 :(得分:32)
一种方法是使用generator expression:
total = sum(int(v) for name,v in table)
答案 1 :(得分:8)
如果你想使用lambda,下面应该解决它:
total = sum(map(lambda x: int(x[1]), table))
答案 2 :(得分:7)
减少可以帮助
total = reduce(lambda x,y:x+int(y[1]), table,0)
答案 3 :(得分:3)
sum(map(int,zip(*table)[-1]))
是一种方法......但是有很多选择
答案 4 :(得分:2)
您还可以获取字典中的值:
total = sum(map(int, dict(table).values())
这可能有点模糊。
答案 5 :(得分:0)
一种方法是使用索引。
if(redirect) {
return <Redirect to="/dashboard" />
} else {
return (
<Your-Component />
)
答案 6 :(得分:-1)
使用lambda函数在嵌套列表中查找总和
(lambda x:sum(x))(列表)