如何将一个元组分配给一个named元组?

时间:2014-02-24 14:11:26

标签: python namedtuple

一个简单的问题:我有一个像这样的命名元组

RowSource = namedtuple("RowSource","parcel_id str_number pre_direct prefix street_name ...")

总共有16个名字。我有一个长度为16的元组,我想分配给指定的元组

t = (653,
526011,
'950',
None,
None,
'county road 999',
None,
None,
'tule',
'ca',
96134,
9225,
-121.400979,
41.877468,
'0101000020E610000080D8D2A3A9595EC0ADA415DF50F04440',
'0101000020E610000080D8D2A3A9595EC0ADA415DF50F04440')

最简单的方法是什么?我的意思是,我不去做[0],t [1]等等。

2 个答案:

答案 0 :(得分:6)

使用*args语法将t中的每个项目作为单独的参数应用:

RowSource(*t)

或者,使用namedtuple._make() class method

RowSource._make(t)

后者有一个稍微有用的TypeError异常消息:

>>> from collections import namedtuple
>>> SampleTuple = namedtuple('Sample', 'foo bar baz')
>>> SampleTuple(1, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __new__() takes exactly 4 arguments (3 given)
>>> SampleTuple._make((1, 2))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 17, in _make
TypeError: Expected 3 arguments, got 2

__new__() takes exactly 4 arguments (3 given)文字,而你明确传入的只有2个关闭了一些较新的Python用户,namedtuple_make()类方法在这里提供的信息略多一些。

答案 1 :(得分:2)

最简单的方法是:

RowSource(*t)