获取namedtuple对象列表中1个字段的总数

问题描述 投票:0回答:1

在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)
python namedtuple
1个回答
0
投票

您可以将

getattr
0
一起使用作为默认值,并将
sum
与生成器表达式一起使用:

sum(getattr(res, 'failed', 0) for res in test_results)
© www.soinside.com 2019 - 2024. All rights reserved.