获取包含命名元组python的某个字符串的属性

时间:2017-01-31 16:04:02

标签: python namedtuple

是否可以在命名元组中获取包含某个字符串的第一个参数:

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方式来实现这一目标?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以通过访问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])

我希望这会有所帮助。

答案 1 :(得分:1)

也许这不是你想要的,但你可以尝试这样的事情:

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))