2014-12-28 95 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