2016-10-22 2 views
0

Я новичок в Python и хочу знать ваши идеи о том, что это лучший способ реализовать следующий предобработки блок (который я, реализованный с использованием IBM-ПОЛ)Препроцессирования в питоне

То, что я сделал в следующей код выглядит следующим образом:

Я создал пустую двумерную матрицу, известную как 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 
      } 
     } 
    } 

Я попытался сделать то же самое с помощью питона, но я нахожу это очень трудно. Потому что я не вижу ясного способа сравнить записи студентов.

Я все настройки, чтобы соединиться с базой данных и извлечения записей с помощью питона следующим образом:

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] 

Ok. Когда я печатаю i [0], он дает мне все идентификаторы учеников. Когда я печатаю i [1], он дает мне подробные сведения об обучении (в моем хранилище я храню его как целое ex: 11, 22. но моя проблема заключается в том, как сравнить пару студентов на основе их образования. структуры данных. Могу ли я в правильном пути?

+0

код в Python будет почти такой же, как один здесь, с различным синтаксисом для циклов и аналогичных деталей. Единственная сложная вещь, если я правильно вас понимаю, заключается в реализации 'stu_info [i] .edu == stu_info [j] .edu'. Но мы не видим здесь, что 'stu_info' - это вообще. И мы не видим, что вы пытались использовать в python. Код python здесь не на всех, связанных с другим кодом. – zvone

+0

Извините, что я не ясно объяснил stu_info [i] .edu == stu_info [j] .edu. На самом деле, как я получил данные об обучении ученика, используя ibm-opl. Например, stu_info [i] .edu возвращает образовательный фон (который я хранил как код в цифрах) ученика. – Neina

+1

Проблема с * «Я пытался сделать то же самое с помощью python, но мне очень сложно» *. Покажите, что вы пробовали. Как бы то ни было, неясно, не знаете ли вы, как реализовать сравнение, не знаете, как использовать 2d-списки, не знаете, как реализовать * для * циклов или вообще не понимать синтаксис Python . Нет никакого способа дать ответ без вашего кода. – zvone

ответ

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