2014-12-28 96 views
2

我已經定義了一個namedtuple這樣的:與kwargs創建namedtuple實例

My_tuple = collections.namedtuple('My_tuple', 'var1, var2') 

我很熟悉製作My_tuple類的一個對象的標準方法,例如:

tup1 = My_tuple('val1', 'val2') 
tup2 = My_tuple(var2='val2', var1='val1') 
tup3 = My_tuple._make(('val1', 'val2')) 

(順便說一句 - 他們之間有什麼區別?)

問題是我的輸入不一定是有序的,而是它包含兩個有序列表,例如:

vars = ['var2', 'var1'] 
vals = ['val2', 'val1'] 

我知道我可以使用setattrdict,但肯定有更緊湊和Python的方式做到這一點?

回答

3

這工作,也沒能得到任何更緊湊:

>>> tup4 = My_tuple(**dict(zip(vars, vals))) 
>>> tup4 
My_tuple(var1='val1', var2='val2') 

要回答你的問題,邊 - 「是它們之間有什麼區別嗎?」 - 不,它們都是一樣的:

>>> tup1 == tup2 == tup3 == tup4 
True