2016-10-22 7 views
0

ich Python bin neu und möchten Ihre Ideen wissen, was ist der beste Weg, um die folgenden Vorbehandlungsblock zu implementieren (die ich umgesetzt haben, mit ibm-OPL)Preprocessing in Python

Was ich in der tat folgende Code ist wie folgt:

Ich habe eine leere zweidimensionale Matrix erstellt, die als edu_bg bekannt ist. Und ich habe bereits eine Abfrage, die mir die Anzahl der Studenten in meiner Datenbanktabelle (die ich mit stuCount-Variable speichere) und ihren Bildungshintergrund liefert. Also, was ich hier mache ist, dass ich ein paar Schüler auf einmal vergleiche und wenn ihr Bildungshintergrund der gleiche ist, gebe ich sie in meine zweidimensionale Matrix ein und wenn sie einen anderen Bildungshintergrund haben, setze ich sie als Null.

Mein Code ist wie folgt:

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 
      } 
     } 
    } 

Ich habe versucht, das gleiche mit Python zu tun, aber ich finde es wirklich schwierig. Weil ich keinen klaren Weg sehe, Schülerakten zu vergleichen.

ich Setup alles mit Datenbank und Abrufen von Datensätzen mit Python zu verbinden, wie folgt:

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. Wenn ich i [0] drucke, gibt es mir alle IDs von Studenten. Wenn ich i [1] drucke, gibt es mir Informationen zur Ausbildung des Schülers (In meiner Datenbank speichere ich es als Ganzzahl ex: 11, 22. Aber mein Problem ist, wie man ein Paar Schüler anhand ihrer Ausbildung vergleicht. Meine Frage ist hier Datenstrukturen. bin ich in den richtigen Pfad?

+0

der Code in Python wäre fast das gleiche wie das sein Hier ist eine andere Syntax für Schleifen und ähnliche Details. Das einzige Problem, wenn ich dich richtig verstehe, ist die Implementierung von 'stu_info [i] .edu == stu_info [j] .edu'. Aber wir sehen hier nicht was "stu_info" ist überhaupt. Und wir sehen nicht, was Sie in Python versucht haben. Der Python-Code ist hier nicht überhaupt bezogen auf den anderen Code. – zvone

+0

Entschuldigung, ich habe nicht klar erklärt stu_info [i] .edu == stu_info [j] .edu. Es ist tatsächlich, wie ich Ausbildungsdetails eines Studenten mit ibm-opl holte. Zum Beispiel gibt stu_info [i] .edu den Bildungshintergrund (den ich als Code in Zahlen gespeichert habe) eines Studenten zurück. – Neina

+1

Das Problem ist mit * "Ich habe versucht, das gleiche mit Python zu tun, aber ich finde es wirklich schwierig" *. Zeigen Sie, was Sie versucht haben. Wie es ist, ist es nicht klar, ob Sie nicht wissen, wie man Vergleiche implementiert, nicht wissen, wie man 2d Listen benutzt, nicht wissen, wie man * for * Schleifen implementiert oder die Python Syntax überhaupt nicht versteht . Es gibt keine Möglichkeit, eine Antwort ohne Ihren Code zu geben. – zvone

Antwort

0

nach einiger Mühe gelang es mir, den Code zu schreiben, wie folgt. Alle mögliche Anmerkungen zu Verbesserungen willkommen.

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