Python-名为tuple的func,返回基于键的值作为func arg

Python-名为tuple的func,返回基于键的值作为func arg,python,Python,是否可以将集合放入函数中,并基于函数参数返回值 这在dicts中是可能的: def sample_dict(key): a = {1 : "value1", 2 : "value2"} return a[key] print(sample_dict(1)) #prints value1 下面我将namedtuple放在一个函数中,但我不知道是否可以根据作为函数参数给出的namedtuple键从tuple返回值: from collections import namedtup

是否可以将集合放入函数中,并基于函数参数返回值

这在dicts中是可能的:

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

print(sample_dict(1)) #prints value1
下面我将namedtuple放在一个函数中,但我不知道是否可以根据作为函数参数给出的namedtuple键从tuple返回值:

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

namedtuple
有一个
\u 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]

请注意,在本例中,
\u asdict
的前导下划线是为了避免与字段名冲突。它并不意味着作为私有属性标志。

正如最初在注释中指出的,您可以使用
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

getattr(usr1348,key)
?@AshwiniChaudhary,如果这是答案,请将其作为答案发布。
getattr
是更好的答案,是的,应该将其作为一个答案发布。尽管你不得不想知道创建命名双倍的意义何在,由于值是硬编码的,输出只是一个键。原则上,我不反对投票,但创建一个dict(或OrderedDict)只是为了获得一个项目,这似乎是肆无忌惮的浪费。