Python - 带有namedtuple的func,它根据key返回值作为func arg

时间:2017-04-13 15:05:14

标签: python

是否可以在函数中放置namedtuple集合,并根据函数参数返回值?

这可以通过dicts:

def sample_dict(key):
    a = {1 : "value1", 2 : "value2"}
    return a[key]

print(sample_dict(1)) #prints value1

下面我将namedtuple放在一个函数中,但我不知道是否可以根据作为函数参数给出的namedtuple键从元组返回值:

from collections import namedtuple

def get_namedtuple_values(key):
    UsrDetails = namedtuple('UsrDetails', 'name age programming_language')
    usr1348 = UsrDetails(name="Mike", age=28, programming_language="Python")
    return #...here should return name, age or programming_language values

2 个答案:

答案 0 :(得分:0)

正如评论中最初指出的那样,您可以使用getattr访问namedtuple实例的属性:

from collections import namedtuple

def get_namedtuple_values(key):
    UsrDetails = namedtuple('UsrDetails', 'name age programming_language')
    usr1348 = UsrDetails(name="Mike", age=28, programming_language="Python")
    return getattr(usr1348, key)

print(get_namedtuple_values("name"))

结果:

Mike

答案 1 :(得分:-1)

namedtuple有一个._asdict()方法,它返回表示此对象的字典。您可以这样使用它:

def get_namedtuple_values(key):
    UsrDetails = namedtuple('UsrDetails', 'name age programming_language')
    usr1348 = UsrDetails(name="Mike", age=28, programming_language="Python")
    return usr1348._asdict()[key]

请注意,在这种情况下,_asdict的前导下划线旨在避免与字段名称冲突。它并不意味着私有财产标志。