我们知道如果我们需要使用pytables定义表的列名,我们可以通过以下方式完成:
class Project(IsDescription):
alpha = StringCol(20)
beta = StringCol(20)
gamma = StringCol(20)
其中alpha,beta和gamma是表的所需列名。 但是假设我想使用一个列表" ColumnNames_list"其中包含列名如下: ColumnNames_list [0] = alpha,ColumnNames_list [1] = beta,ColumnNames_list [2] = gamma
然后我该如何定义上面的课程" Project"?
我尝试了以下内容:
ColumnNames_list = []
ColumnNames_list[0] = alpha
ColumnNames_list[1] = beta
ColumnNames_list[2] = gamma
class Project(IsDescription):
for i in range (0, 10):
ColumnNames_list[i] = StringCol(20)
它显示错误:
TypeError:将不正确的值传递给表列。期望Col(或子类)实例得到:" 2"。请使用Col()或后代构造函数来正确初始化列。
答案 0 :(得分:0)
首先在循环外定义变量:
ColumnNames_list = []
for i in range (0, 10):
ColumnNames_list.append(StringCol(20))
我使用append()
而不是ColumnNames_list[i] = StringCol(20)
的原因是因为您无法分配到不存在的索引。尝试在ColumnNames_list [1]存在之前进行分配会抛出IndexError.