获取包含命名元组的特定字符串的属性 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))
是否有可能在命名元组中获取包含特定字符串的第一个参数,例如:
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))