我是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]时,它给了我学生的教育细节(在我的数据库中,我将它存储为整数:11,22。但我的问题是如何根据他们的教育比较一对学生。我的这里的问题是数据结构。我是否在正确的道路上?
答案 0 :(得分:0)
经过一番努力,我设法编写如下代码。欢迎提出任何改进意见。
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