从元组创建命名元组?
Creating named tuple from tuple?
我正在使用 kinterbasdb select 并更新 1998 年数据库中的一些数据(是的,不幸的是 :()。kinterbasdb 的 API return 来自的值元组查询,例如:
connection = connect(dsn="database.gdb", user="MYUSER", password="MYPASSWORD")
cursor = connection.cursor()
cursor.execute("SELECT * FROM TABLE_X")
result = cursor.fetchone() # tuple => (value1, value2, value3, value4, value5)
我想将此元组映射到命名元组。可能吗?
我正在使用 Python 2.7.13(我能够更新 kinterbasdb 模块以使其工作......至少)
只需使用 *
将您的元组作为扩展参数传递给 namedtuple 构造函数。
In [1]: from collections import namedtuple
In [2]: Response = namedtuple('Response', ['thing1', 'thing2', 'thing3', 'thing4'])
In [3]: mytuple = (1, 2, 3, 4)
In [4]: Response(*mytuple)
Out[4]: DBResponse(thing1=1, thing2=2, thing3=3, thing4=4)
示例:
from collections import namedtuple
t=("value1", "value2", "value3", "value4", "value5")
Data=namedtuple("Data",["v1","v2","v3","v4","v5"])
nt=Data(*t)
>>> nt
Data(v1='value1', v2='value2', v3='value3', v4='value4', v5='value5')
或使用_make
方法:
>>> Data._make(t)
Data(v1='value1', v2='value2', v3='value3', v4='value4', v5='value5')
我正在使用 kinterbasdb select 并更新 1998 年数据库中的一些数据(是的,不幸的是 :()。kinterbasdb 的 API return 来自的值元组查询,例如:
connection = connect(dsn="database.gdb", user="MYUSER", password="MYPASSWORD")
cursor = connection.cursor()
cursor.execute("SELECT * FROM TABLE_X")
result = cursor.fetchone() # tuple => (value1, value2, value3, value4, value5)
我想将此元组映射到命名元组。可能吗?
我正在使用 Python 2.7.13(我能够更新 kinterbasdb 模块以使其工作......至少)
只需使用 *
将您的元组作为扩展参数传递给 namedtuple 构造函数。
In [1]: from collections import namedtuple
In [2]: Response = namedtuple('Response', ['thing1', 'thing2', 'thing3', 'thing4'])
In [3]: mytuple = (1, 2, 3, 4)
In [4]: Response(*mytuple)
Out[4]: DBResponse(thing1=1, thing2=2, thing3=3, thing4=4)
示例:
from collections import namedtuple
t=("value1", "value2", "value3", "value4", "value5")
Data=namedtuple("Data",["v1","v2","v3","v4","v5"])
nt=Data(*t)
>>> nt
Data(v1='value1', v2='value2', v3='value3', v4='value4', v5='value5')
或使用_make
方法:
>>> Data._make(t)
Data(v1='value1', v2='value2', v3='value3', v4='value4', v5='value5')