使用lambda函数在嵌套列表中查找总和

hli*_*117 20 python lambda functional-programming sum

我有一个与此类似的数据结构

table = [
    ("marley", "5"),
    ("bob", "99"),
    ("another name", "3")
]
Run Code Online (Sandbox Code Playgroud)

我想做什么,得到第二列(5 + 99 + 3)的总和在功能上像这样:

total = sum(table, lambda tup : int(tup[1]))
Run Code Online (Sandbox Code Playgroud)

这将是与python函数类似的语法sorted,但这不是你将如何使用python的sum函数.

总结第二列的pythonic/functional方法是什么?

Pet*_*vaz 33

一种方法是使用生成器表达式:

total = sum(int(v) for name,v in table)
Run Code Online (Sandbox Code Playgroud)


Fre*_*man 8

如果你想使用lambda,下面应该解决它:

total = sum(map(lambda x: int(x[1]), table))
Run Code Online (Sandbox Code Playgroud)


rth*_*rth 7

减少可以帮助

total = reduce(lambda x,y:x+int(y[1]), table,0)
Run Code Online (Sandbox Code Playgroud)