Ich arbeite an der Konvertierung von Daten in einem Datumsformat in eine neue ID basierend auf anderen Informationen in der Kalkulationstabelle. Ich möchte auch _2, _3, etc. basierend auf späteren Ereignissen am selben Tag hinzufügen. Wenn also 3 Fälle von 20101212 in der dateID vorhanden sind, würde bei den letzten 2 Ereignissen ein _2 und _3 auf die ID modifiziert werden.Python-Schleifen: Genereller machen
Wie kann ich meine Lösung allgemeiner gestalten? Es funktioniert, aber es ist nicht sehr wiederverwendbar. Es ist derzeit nur hart codiert, wie ich in dieser spezifischen Tabelle weiß, gibt es nicht mehr als 3 Fälle eines bestimmten Datums. Wie kann ich den Code schreiben, um Ereignisse mit mehr als 3 Fällen am selben Tag zu erfassen, ohne dass weitere Elif-Anweisungen hinzugefügt werden?
dateID = [some list of strings in date format]
GS = [some list of 2 letter strings to append to corresponding dates]
#len(GS) = len(dateID)
caseID = []
y = collections.Counter(dateID)
#len(y) < len(dateID)
j = 0
for i in range(len(y)):
num_iter = sorted(y.iteritems())[i][1]
if num_iter == 1:
case = sorted(y.iteritems())[i][0] + GS[j]
caseID.append(case)
j = j + 1
elif num_iter == 2:
case = sorted(y.iteritems())[i][0] + GS[j]
caseID.append(case)
j = j + 1
case = sorted(y.iteritems())[i][0] + GS[j] + '_2'
caseID.append(case)
j = j + 1
elif num_iter == 3:
case = sorted(y.iteritems())[i][0] + GS[j]
caseID.append(case)
j = j + 1
case = sorted(y.iteritems())[i][0] + GS[j] + '_2'
caseID.append(case)
j = j + 1
case = sorted(y.iteritems())[i][0] + GS[j] + '_3'
caseID.append(case)
j = j + 1
else:
caseID.append('This catchs errors, add more elif num_iter == __')
dateID = ['19820323','19831209','19840218','19840321','19840504','19841227','19841227','19850104','19850110','19850114']
GS = [u'Er', u'Er', u'Er', u'Er', u'Er', u'Mn', u'Mn', u'Er', u'Er', u'Er']
Vielen Dank auch. Ich verstehe jetzt, dass deine Lösung ist, dass ich eine weitere Schleife über diese hinzufügen soll. Die pythonische Art, Code zu schreiben, verwirrte mich zuerst, da ich immer noch zu viele Schritte in meiner Programmierung habe. – Almidas