是否可以在命名元组中获取包含某个字符串的第一个参数:
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方式来实现这一目标?谢谢!
答案 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))