Ich habe bemerkt, dass wenn ich über eine Liste iteriere und in der Schleife einzelne Elemente per remove() rauslösche, Blödsinn rauskommt.
Vereinfacht sowas wie:
Code: Alles auswählen
for element in liste:
if element < 42:
liste.remove(element)
Abgesehen von der Möglichkeit von mapping in diesem simplen Beispiel: wie kann ich das sonst noch erreichen mit zuverlässigem Ergebnis?
Eigentlicher Code:
Code: Alles auswählen
for row in csvReader:
## I know that this got bad performance but it's fast for reasonable number of alarms anyhow
for alarm in alarms:
if str(alarm['description']) == row['description'] and \
str(alarm['begin']) == row['begin'] and \
str(alarm['end']) == row['end'] and \
str(alarm['alarm']) == row['alarm']:
alarm['description']=DELETESTRING
alarms.remove(alarm)
break # ein alarm kommt nur 1x vor