web-dev-qa-db-ja.com

ラムダ関数を使用してネストされたリストで合計を見つける

私はこれに似たデータ構造を持っています

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

2番目の列の合計(5 + 99 + 3)を機能的に取得するには、次のようにします。

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

これはpython function sortedと同様の構文ですが、Pythonのsum関数を使用する方法とは異なります。

2列目を要約するPythonic /機能的な方法は何ですか?

19
hlin117

1つのアプローチは、 ジェネレーター式 を使用することです。

total = sum(int(v) for name,v in table)
32
Peter de Rivaz

ラムダを使用する場合は、次の方法で解決できます。

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

減らすことができます

total = reduce(lambda x,y:x+int(y[1]), table,0)
7
rth
sum(map(int,Zip(*table)[-1]))

それを行う1つの方法です...しかし、多くのオプションがあります

3
Joran Beasley

辞書の値を取得することもできます。

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

これは少しあいまいかもしれません。

2
Peter Wood