python - 使用 kwargs 创建namedtuple实例

标签 python initialization keyword-argument 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,但肯定有更紧凑和 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/

相关文章:

c - 初始化结构变量 - 错误 : expected identifier or '(' before '.' token

ruby - 我应该如何为 Ruby 关键字参数提供 YARD/RDoc 文档?

python - 从集合python中获取项目

python - 将手写文本分割成行

python - Python中迭代器的最后N个元素以外的所有元素

python - 创建 GAE 实体时遇到问题

python - 如何使用 **kwargs 更改默认值?

python - 如何使用正则表达式进行多次替换?

c - 初始化结构体数组

c++ - Radio r = Radio ("PSR", 100.8) 和 Radio ("PSR", 100.8) 有什么区别?