[英]Preprocessing in python
我是python的新手,想了解您的想法,以了解实现以下预处理块的最佳方法是什么(我已经使用ibm-opl实现了)
我在以下代码中所做的工作如下:
我创建了一个空的二维矩阵,称为edu_bg。 而且我已经有了一个查询,该查询可以为我提供数据库表中的学生人数(我使用stuCount变量存储该表)及其教育背景。 因此,我在这里要做的是一次比较一对学生,如果他们的教育背景相同,我会将他们输入到我的二维矩阵中,如果他们的教育背景不同,我会将他们设为零。
我的代码如下:
int edu_bg[student][student];
execute PREPROCESSING{
for(i=1; i <=stuCount; i++){
for(j=i+1; j <=stuCount; j++){
if(stu_info[i].edu==stu_info[j].edu){
edu_bg[i][j] =1
}
else{
edu_bg[i][j] =0
}
}
}
我试图使用python来做同样的事情,但是我发现这真的很困难。 因为我看不到比较学生记录的明确方法。
我将一切设置为与数据库连接并使用python获取记录,如下所示:
con = sqlite3.connect(os.path.join('..','db_path', 'db'))
cur = con.cursor()
cur.execute('select id,edu from student_data')
result = cur.fetchall()
for i in result:
print i[0]
好。 当我打印i [0]时,会给我所有学生的身份证。 当我打印i [1]时,它给了我学生的教育详细信息(在我的数据库中,我将其存储为整数ex:11、22。但是我的问题是如何根据他们的教育程度比较一对学生。我的问题是数据结构,我的路径正确吗?
经过一些努力,我设法编写了如下代码。 欢迎对改进发表任何意见。
data=curr.execute('select id,edu from student_data')
result = curr.fetchall()
mydic1=dict(result)
data2=curr.execute('select id,edu from student_data ')
result2 = curr.fetchall()
mydic2=dict(result2)
looping=curr.execute('select count(id) from student_data')
loop_times = curr.fetchall()
count = int(loop_times[0][0])
count = count + 1
edu=defaultdict(int)
a=0
for i in range(1,count):
row = []
for j in range(i+1, count):
if mydic1[i]==mydic2[j]:
row.append(1)
else:
row.append(0)
edu[a]=row
a+=1
print edu
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.