Ich habe eine DB-Abfrage, die drei Datensätze zurückgibt. Es kommt in diesem Format.Kombinieren Sie Daten aus mehreren Listen unterschiedlicher Länge
year = (('Adison', '355', 4), ('windsor windham', '455', 6), ('windham', '655', 2), ('btown', '233', 5))
month = (('Adison', '355', 2), ('windham', '655', 1))
week = (('btown', '233', 8), ('Adison', '355', 9))
Die Jahresliste ist immer die längste mit den meisten Werten. Ich muss den letzten Wert von jedem Element in den Monats- und Wochenlisten nehmen und sie an der richtigen Stelle an die Jahresliste anhängen, basierend auf der Stadt.
IF gibt es nicht einen entsprechenden Wert in Monat oder Woche, ich brauche eine 0 Ideal anhängen macht es so aussehen:
year = (('Adison', '355', 4, 2, 9), ('windsor windham', '455', 6, 0, 0), ('windham', '655', 2, 1, 0), ('btown', '233', 5, 0, 8))
ich versucht habe man zwei Listen in einer for-Schleife und unter Verwendung eines if in
Bedingung, um Werte zu überprüfen, aber ich denke, dass ich etwas übersehen habe und Indexfehler erhalte. Ich habe versucht, so etwas wie dieses:
for each in year:
for part in month:
if part in each:
each.append(part[-1])
else:
each.append(0)
Ich weiß, dass es einen besseren Weg zu sein hat, und eine, die dies tatsächlich funktioniert zu erreichen. Gibt es ein Werkzeug oder Modul, das ich untersuchen sollte? Ich habe mit zip
gespielt, aber weil sie nicht die gleiche Länge haben, habe ich Probleme. Danke!
EDIT
Ich verstehe, dass ich Tupeln oben haben, In meinem Code ein, sie konvertieren alle Objekte aufzulisten, bevor ändern. Ich bin auch auf Python 3.6
In welcher Python-Version bist du? –
Ich benutze 3.6. – Joe
Python-Tupel sind unveränderlich, daher haben sie keine '.append'-Methode. Du musst Sachen machen wie 'new_tuple = old_tuple + ('more', 'data')' –