我定义了一个像这样的命名元组:
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 的方法来做到这一点?
最佳答案
这可行,而且再紧凑不过了:
>>> tup4 = My_tuple(**dict(zip(vars, vals)))
>>> tup4
My_tuple(var1='val1', var2='val2')
回答你的附带问题 - “它们之间有什么区别吗?” - 不,它们都是一样的:
>>> tup1 == tup2 == tup3 == tup4
True
关于python - 使用 kwargs 创建namedtuple实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27676866/