在Python中,从一组命名元组中获取一个字段的总数的最简单方法是什么?
在这个例子中,我正在寻找
TestResults.failed
的总数,应该是 4。使用 for
循环是可行的,但感觉可能有更有效的方法。
from collections import namedtuple
TestResults = namedtuple('TestResults', ['failed', 'attempted'])
test_results = [
TestResults(0, 5),
TestResults(3, 28),
TestResults(1, 7)
]
failed_count = 0
for r in test_results:
if hasattr(r, 'failed'):
failed_count += r.failed
print(failed_count)
您可以将
getattr
与 0
一起使用作为默认值,并将 sum
与生成器表达式一起使用:
sum(getattr(res, 'failed', 0) for res in test_results)