J'ai une structure de données similaire à celle-ci
table = [
("marley", "5"),
("bob", "99"),
("another name", "3")
]
Ce que je voudrais faire, pour obtenir la somme de la 2ème colonne (5 + 99 + 3) fonctionnellement comme ceci:
total = sum(table, lambda tup : int(tup[1]))
Ce serait une syntaxe similaire à la fonction python sorted
, mais ce n'est pas comme cela que vous utiliseriez la fonction sum
de python.
Quelle est la façon pythonique/fonctionnelle de résumer la deuxième colonne?
Une approche consiste à utiliser un expression de générateur :
total = sum(int(v) for name,v in table)
Si vous souhaitez utiliser lambda, les éléments suivants devraient le résoudre:
total = sum(map(lambda x: int(x[1]), table))
réduire peut aider
total = reduce(lambda x,y:x+int(y[1]), table,0)
sum(map(int,Zip(*table)[-1]))
est une façon de le faire ... il existe cependant de nombreuses options
Vous pouvez également obtenir les valeurs dans un dictionnaire:
total = sum(map(int, dict(table).values())
Cela peut être un peu obscur.