获取包含命名元组的特定字符串的属性 python

get attribute containing a certain string of a named tuple python

是否有可能在命名元组中获取包含特定字符串的第一个参数,例如:

import collections

data_line = collections.namedtuple('ex', 'a_1 b_1 a_2')
data = data_line(a_1=10, b_1=11, a_2=10)

getattr(data, 'a_2')

我想获取包含字符串 'a' 的第一个参数,例如:

getattr(data, contains('a'))

有什么 pythonic 方法可以实现这个吗?谢谢!

您可以通过访问 namedtuple 的字段并分割输出以获得您想要的结果来完成它:

或者:

[getattr(data, x) for x in data._fields if x.startswith('a')][0]

或者:

getattr(data, [x for x in data._fields if x.startswith('a')][0])

希望对您有所帮助。

也许这不是您想要的,但您可以尝试这样的操作:

def contains(val):
    if val.startswith('a'):
        return True
    else:
        return False
for a in filter(contains, data._fields):
    getattr(data, a)

你可能想要一个列表:

a_list = list(filter(contains, data._fields))