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

时间:2014-07-30 21:47:20

标签: python lambda functional-programming sum

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

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方法是什么?

7 个答案:

答案 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))(列表)