Seite 1 von 1

List, Array oder Dictionary

Verfasst: Donnerstag 21. Februar 2013, 13:45
von NinaKlein
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 :wink:

Re: List, Array oder Dictionary

Verfasst: Donnerstag 21. Februar 2013, 13:55
von EyDu
Hallo und willkommen im Forum!

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]})
Du musst ggf. noch auf die Sortierung achten.

Re: List, Array oder Dictionary

Verfasst: Donnerstag 21. Februar 2013, 14:48
von NinaKlein
Teste ich gelich und les mich mal ein, das is noch relativ neu fuer mich :)

danke dafuer =)

Re: List, Array oder Dictionary

Verfasst: Donnerstag 21. Februar 2013, 15:14
von NinaKlein
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?

Re: List, Array oder Dictionary

Verfasst: Donnerstag 21. Februar 2013, 15:16
von EyDu

Code: Alles auswählen

lambda : [0]*len(zs)
Das ist aber eigentlich eine absolute Grundlage. Hast du das Tutorial durchgearbeitet?

Re: List, Array oder Dictionary

Verfasst: Donnerstag 21. Februar 2013, 15:18
von NinaKlein
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 :)

Re: List, Array oder Dictionary

Verfasst: Donnerstag 21. Februar 2013, 15:32
von /me
NinaKlein hat geschrieben:Habe das auch versucht aber hatte einen Dreher zs heisst bei mir ts und s zs deswegen bin ich durcheinander gekommen.
Und wieder ein Argument für deskriptive Bezeichnernamen. :D

Re: List, Array oder Dictionary

Verfasst: Donnerstag 21. Februar 2013, 17:53
von EyDu
/me hat geschrieben:
NinaKlein hat geschrieben:Habe das auch versucht aber hatte einen Dreher zs heisst bei mir ts und s zs deswegen bin ich durcheinander gekommen.
Und wieder ein Argument für deskriptive Bezeichnernamen. :D
Ach was, bei xs, zs und ts ist doch klar was drinnen steckt. Eben Listen bestehend aus x-Elementen, y-Elementen und t-Elementen. :lol: