我已经定义了一个这样的命名元组:
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']
我知道我可以使用setattr
或dict
,但肯定会有一种更紧凑和Pythonic的方法吗?
答案 0 :(得分:3)
这很有效,而且不能再紧凑了:
>>> tup4 = My_tuple(**dict(zip(vars, vals)))
>>> tup4
My_tuple(var1='val1', var2='val2')
要回答你的问题 - “他们之间有什么区别吗?” - 不,他们都是一样的:
>>> tup1 == tup2 == tup3 == tup4
True