动态创建 namedtuple 时的正确格式
Proper format when dynamically creating namedtuple
我创建了一个 namedtuple 并用它来跟踪单个数据集。当我向 namedtuple 添加新的 "data point" 时,print() 函数显示我没有完全相同的信息。这是一个例子:
from collections import namedtuple
bbnr = namedtuple('bbnr', ['SN', 'ptr', 'type2'])
DVCS = bbnr('AB01', 101, 'bbnr')
DVCS_b = [DVCS]
print(DVCS_b) # produces [bbnr(SN='AB01', ptr=101, type2='bbnr')]
DVCS = DVCS, bbnr('AB02', 105, 'bbnr')
DVCS_b = [DVCS]
print(DVCS_b) # [(bbnr(SN='AB01', ptr=101, type2='bbnr'), bbnr(SN='AB02', ptr=105, type2='bbnr'))]
请注意,在第二个打印输出中,括号内的整个元组周围有一组额外的括号 ()。
如何与向命名元组添加新元素保持一致?
您的问题与命名元组无关;你正在创造这些就好了。
相反,您在此处创建了一个元组:
DVCS = DVCS, bbnr('AB02', 105, 'bbnr')
注意逗号;元组由逗号定义,而不是括号:
>>> 1
1
>>> 1,
(1,)
>>> 1, 2
(1, 2)
然后您将该元组包装到一个列表对象中。
如果您想要这些值的列表,那么只需创建列表:
DVCS_b = [DVCS, bbnr('AB02', 105, 'bbnr')]
或者创建不带 DVCS
值的新命名元组,并从现有列表中获取您之前创建的命名元组:
DVCS = bbnr('AB02', 105, 'bbnr')]
DVCS_b = DVCS_b + [DVCS]
或将其追加到现有列表中:
DVCS = bbnr('AB02', 105, 'bbnr')]
DVCS_b.append(DVCS)
我创建了一个 namedtuple 并用它来跟踪单个数据集。当我向 namedtuple 添加新的 "data point" 时,print() 函数显示我没有完全相同的信息。这是一个例子:
from collections import namedtuple
bbnr = namedtuple('bbnr', ['SN', 'ptr', 'type2'])
DVCS = bbnr('AB01', 101, 'bbnr')
DVCS_b = [DVCS]
print(DVCS_b) # produces [bbnr(SN='AB01', ptr=101, type2='bbnr')]
DVCS = DVCS, bbnr('AB02', 105, 'bbnr')
DVCS_b = [DVCS]
print(DVCS_b) # [(bbnr(SN='AB01', ptr=101, type2='bbnr'), bbnr(SN='AB02', ptr=105, type2='bbnr'))]
请注意,在第二个打印输出中,括号内的整个元组周围有一组额外的括号 ()。
如何与向命名元组添加新元素保持一致?
您的问题与命名元组无关;你正在创造这些就好了。
相反,您在此处创建了一个元组:
DVCS = DVCS, bbnr('AB02', 105, 'bbnr')
注意逗号;元组由逗号定义,而不是括号:
>>> 1
1
>>> 1,
(1,)
>>> 1, 2
(1, 2)
然后您将该元组包装到一个列表对象中。
如果您想要这些值的列表,那么只需创建列表:
DVCS_b = [DVCS, bbnr('AB02', 105, 'bbnr')]
或者创建不带 DVCS
值的新命名元组,并从现有列表中获取您之前创建的命名元组:
DVCS = bbnr('AB02', 105, 'bbnr')]
DVCS_b = DVCS_b + [DVCS]
或将其追加到现有列表中:
DVCS = bbnr('AB02', 105, 'bbnr')]
DVCS_b.append(DVCS)