mein Programm soll 2 Listen mit einander vergleichen und jene Zeile ausgeben, wo die ID2 in Liste1 größer ist als in Liste2. Die ID1, von und bis sind aber ident.
Liste 1:
ID1 von bis ID2
| 101|01.01.2006|31.12.2006| 5|
| 105|01.01.2008|31.12.2008| 1|
| 107|01.01.2006|16.05.2006| 3|
| 1107|01.01.2006|30.05.2006| 3|
Liste 2:
ID1 von bis ID2
| 101|01.01.2006|31.12.2006| 3|
| 105|01.01.2008|31.12.2008| 1|
| 107|01.01.2006|16.05.2006| 2|
| 1107|01.01.2006|30.06.2006| 3|
Hier mein Code:
Code: Alles auswählen
datei1 = str(eing1.get())
in_T5 = open(datei1,'rU')
datei2 = str(eing2.get())
in_ZZT = open(datei2,'rU')
out_f1 = file (str(eing3.get()) , 'w')
listT5 = list()
listZZT = list()
i = 1
for line in in_T5:
text = line
for line in text.split('\n'):
try:
pernr, von, bis, id = (x.strip() for x in line[1:-1].split('|'))
except ValueError:
pass
else:
if pernr and von and bis and id:
listT5.append((pernr, von, bis, id))
for line in in_ZZT:
text = line
for line in text.split('\n'):
try:
pernr, von, bis, id = (x.strip() for x in line[1:-1].split('|'))
except ValueError:
pass
else:
if pernr and von and bis and id:
listZZT.append((pernr, von, bis, id))
while i < len(listZZT):
if listT5[i][0] == listZZT[i][0]:
if listT5[i][3] > listZZT[i][3]:
if listT5[i][1] == listZZT[i][1]:
if listT5[i][2] == listZZT[i][2]:
write.out_f1("%s |" % listT5)
Das Programm sollte aber Listen mit bis zu 20.000 Einträgen in akzeptabler Zeit verarbeiten können. Kann mir bitte jemand helfen die Laufzeit dieses Programmes zu verbessern.
Dank im Voraus
FROSCH