私はこれに似たデータ構造を持っています
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 /機能的な方法は何ですか?
1つのアプローチは、 ジェネレーター式 を使用することです。
total = sum(int(v) for name,v in table)
ラムダを使用する場合は、次の方法で解決できます。
total = sum(map(lambda x: int(x[1]), table))
減らすことができます
total = reduce(lambda x,y:x+int(y[1]), table,0)
sum(map(int,Zip(*table)[-1]))
それを行う1つの方法です...しかし、多くのオプションがあります
辞書の値を取得することもできます。
total = sum(map(int, dict(table).values())
これは少しあいまいかもしれません。