Hi,
ich bin neu hier im Forum und moechte mich deswegen kurz vorstellen. Ich heisse Nina bin 24Jahre alt, komme aus Berlin und studiere zur Zeit. Ich sitz seit ein paar Wochen an mehreren kleinen Python Skripten und es macht mir echt Spass damit zu programmieren (ist meine erste Programmiersprache). Im Moment sitz ich allerdings an einem fuer euch bestimmt trivialen Problem und wollte fragen ob ihr mir dau Tipps und Denkanstoesse geben koenntet.
Ich bekomme ueber eine SQL Abfrage einige Arrays nach folendem Schema:
z1 = ((2001,12), (2002,4), (2003,21), (2004,3))
z2 = ((2001,3), (2002,44), (2005,2), (2006,34))
z3 = ((2002,1), (2003,14), (2004,221), (2005,443))
Und wuerde dies nun gerne in eine Tabelle schreiben mit folgendem Output:
Jahr | z1 | z2 | z2
+++++++++++++++
2001| 12 3 0
2002| 4 44 1
2003| 21 0 14
2004| 3 0 221
2005| 0 2 443
2006| 0 34 0
Dabei sollen die nicht vorhanden Stellen mit 0 geschrieben werden..
Koennt ihr mir da Tipps geben? Also wie ich es allg in eine csv schreibe ist kein Problem aber wie bekomm ich es so gereglt, dass alles zusammen passt?
Waere ueber Hilfe sehr dankbar
eure LisaKlein
List, Array oder Dictionary
Hallo und willkommen im Forum!
Das lässt sich in wenigen Zeilen lösen:
Du musst ggf. noch auf die Sortierung achten.
Das lässt sich in wenigen Zeilen lösen:
Code: Alles auswählen
>>> zs = [((2001,12), (2002,4), (2003,21), (2004,3)), ((2001,3), (2002,44), (2005,2), (2006,34)), ((2002,1), (2003,14), (2004,221), (2005,443))]
>>> import collections
>>> d = collections.defaultdict(lambda : [0, 0, 0])
>>> for i, xs in enumerate(zs):
... for (year, value) in xs:
... d[year][i] = value
...
>>> d
defaultdict(<function <lambda> at 0x17a47d0>, {2001: [12, 3, 0], 2002: [4, 44, 1], 2003: [21, 0, 14], 2004: [3, 0, 221], 2005: [0, 2, 443], 2006: [0, 34, 0]})
Das Leben ist wie ein Tennisball.
Leider habe ich noch ein Problem:
Das Beispiel funktioniert ja jetzt wuerde 3 Werte (0,0,0) aber die Anzahl soll da variabel sein da es manchmal 4 Arrays sind manchmal aber auch ueber 100..!?
Kann ich dem dann irgend wie die len(Array) uebergeben?
Das Beispiel funktioniert ja jetzt wuerde 3 Werte (0,0,0) aber die Anzahl soll da variabel sein da es manchmal 4 Arrays sind manchmal aber auch ueber 100..!?
Kann ich dem dann irgend wie die len(Array) uebergeben?
Code: Alles auswählen
lambda : [0]*len(zs)
Das Leben ist wie ein Tennisball.
Ja bin hier durch: http://docs.python.org/2/library/collections.html
Habe das auch versucht aber hatte einen Dreher zs heisst bei mir ts und s zs deswegen bin ich durcheinander gekommen..
sorry und nochmals vielen Dank
Habe das auch versucht aber hatte einen Dreher zs heisst bei mir ts und s zs deswegen bin ich durcheinander gekommen..
sorry und nochmals vielen Dank
Ach was, bei xs, zs und ts ist doch klar was drinnen steckt. Eben Listen bestehend aus x-Elementen, y-Elementen und t-Elementen./me hat geschrieben:Und wieder ein Argument für deskriptive Bezeichnernamen.NinaKlein hat geschrieben:Habe das auch versucht aber hatte einen Dreher zs heisst bei mir ts und s zs deswegen bin ich durcheinander gekommen.
Das Leben ist wie ein Tennisball.