Python namedtuple:如何重用用于在namedtuple中创建属性的变量以从namedtuple获取值?

时间:2018-07-21 06:59:16

标签: python namedtuple

如何使用colname_1获取namedtuple属性foo的值?

from collections import namedtuple

colname_1 = 'foo'
colname_2 = 'bar'

Farm = namedtuple('Farm', 'foo bar')
farm = Farm('apple', 'banana')

farm.foo  # OK
farm.colname_1  #  of course this doesn't work!

1 个答案:

答案 0 :(得分:0)

使用getattr()

getattr(farm, colname_1) # 'apple'

来自named tuple docs

  

要检索名称存储在字符串中的字段,请使用getattr()函数

或者,尽管笨拙,但您可以索引到._fields属性中:

farm[[i for i, f in enumerate(farm._fields) if f == colname_1][0]] # 'apple'