2017-04-13 72 views
0

是否有可能將namedtuple集合放入函數中,並根據函數參數返回值?Python的func與namedtuple,返回基於密鑰的值作爲func arg

這是可能的類型的字典:

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 
+1

'GETATTR(usr1348,鍵)'? –

+0

@AshwiniChaudhary,如果這是答案,請張貼它作爲答案。 – Kevin

+0

'getattr'是更好的答案,是的,應該把它作爲一個。 – danny

回答

-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是爲了避免與字段名稱衝突。它並不意味着作爲私人財產的標誌。

+0

雖然您必須首先想知道創建namedtuple的要點,因爲這些值是硬編碼的,輸出只是一個鍵。 –

+0

我的原則不是倒票,而是創建一個字典(或OrderedDict)只是爲了獲得一個單一的項目,這似乎是肆意浪費。 –

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 
相關問題