在python中预处理

时间:2016-10-22 19:21:26

标签: python list matrix

我是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。但我的问题是如何根据他们的教育比较一对学生。我的这里的问题是数据结构。我是否在正确的道路上?

1 个答案:

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