使用pytables在类定义中使用for循环定义表的列名

时间:2015-02-01 00:54:28

标签: pytables

我们知道如果我们需要使用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()或后代构造函数来正确初始化列。

1 个答案:

答案 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.