Seite 1 von 1
Bloody newbe II: mehrere Werte aus Dictionary ausgeben?
Verfasst: Sonntag 25. Oktober 2009, 20:12
von doca82
Hallo,
mal noch eine blutige Anfängerfrage:
Wie kann ich mehrere bestimmte Werte eines Dictionary ausgeben?
In Büchern ist immer nur das Beispiel mit einem Wert..?
Hier mein Versuch:
Code: Alles auswählen
paketB = {'name' : 'Basispaket',
'preis' : '85',
'rabatt' : '15'}
paketP = {'name' : 'Premiumpaket',
'preis' : '150',
'rabatt' : '30'}
print paketB['name', 'preis']
gebe ich nur "print paketB['name']" ein funzzt alles?!
Danke und Grüße
Verfasst: Sonntag 25. Oktober 2009, 20:18
von doca82
oh sorry Fehlermeldung ist folgende:
Traceback (most recent call last):
File "C:... <module>
print paketB['name', 'preis']
KeyError: ('name', 'preis')

Re: Bloody newbe II: mehrere Werte aus Dictionary ausgeben?
Verfasst: Sonntag 25. Oktober 2009, 20:23
von numerix
Code: Alles auswählen
paket_b = {'name' : 'Basispaket', 'preis' : '85', 'rabatt' : '15'}
print paket_b['name'], paket_b['preis']
Verfasst: Sonntag 25. Oktober 2009, 20:25
von doca82
hmm ja das leuchtet ein...
Danke fürs nicht zu frein zum Antworten sein

Verfasst: Sonntag 25. Oktober 2009, 20:26
von ms4py
Vielleicht an der Stelle noch einen Hinweis auf PEP8 (
http://www.python.org/dev/peps/pep-0008/ )
Variablennamen schreibt man immer klein_und_mit_unterstrich, Klassennamen in CamelCase.
Re: Bloody newbe II: mehrere Werte aus Dictionary ausgeben?
Verfasst: Sonntag 25. Oktober 2009, 21:00
von cofi
doca82 hat geschrieben:Wie kann ich mehrere bestimmte Werte eines Dictionary ausgeben?
In Büchern ist immer nur das Beispiel mit einem Wert..?
Und das macht dich nicht stutzig ?
Ich hab ein wenig nachgedacht, ob ich ein Snippet Posten sollte, dass das ermoeglicht, kam aber zu dem Schluss, dass das beste Ergebnis wiederum ein Dictionary sein muss und deshalb keinen echten Mehrwert haette.
Was hast du denn damit vor? Beziehungsweise was ist das Problem, das du loesen willst? Oder willst du nur die Sprache erkunden?
Verfasst: Sonntag 25. Oktober 2009, 22:01
von doca82
hi cofi,
ach das Problem scheint mir als Anfänger gigantisch...

und eigentlich will ich nur die Sprache lernen, uneigentlich natürlich was Sinnvolles machen, um mir die Arbeit in meinem Unternehmen zu erleichtern.
Was ich machen will, ist eine Art Rechnungsgenerator. Daten sollen aus einer Mysql DB ausgelesen werden und als ein "ansehnliches" PDF dynamisch generiert werden
Das Problem oben ist wohl auf mein fehlendes Verständis für die Python Syntax zurückzuführen...;P
Ich habe mich mehr intuitiv gefragt, warum man die Werte nicht zusammen ausgeben kann, weil sonst die Spache echt intuitiv ist (natürlich gemäß der Intuition eines Totalanfängers)
Grüße
Verfasst: Sonntag 25. Oktober 2009, 23:21
von cofi
"intuitiv" hm.
Das Problem ist einfach, dass man den Rueckgabewert wiederum auseinandernehmen muss, im besten Fall ist das wie gesagt, ein Dictionary, im Normalfall ist das nur ein Tupel, dh man muss sich an den Indizes entlang hangeln. IMHO sehr unschoen.
Wie baust du denn die PDF? LaTeX oder Reportlab?
Ach und welche Buecher meintest du am Anfang? Ich hoffe nicht das OpenBook von Galileo.
Verfasst: Montag 26. Oktober 2009, 08:34
von doca82
hab mir das ReportLab modul installiert...meinst du Latex ist besser? und wenn ja warum?
Ja das mit den indizes ist doch echt unschön...die dics sind viel entspannter finde ich..die "richtigen" Namen machen das Ganze etwas durchschaubarer
Bücher...ja das Galileo Ding ist Schrott, habe ich für mich festgestellt. Für mich war das zu komplex irgendwie... Hab mir das "Python Grundlagen und Praxis" von Peter Walerowski gekauft. Das ist zwar etwas älter (python 2.5) aber echt gut für meine Zwecke. Kann ich jedem Totalanfänger sehr ans Herz legen...
Ansonsten ist noch das "Beginning Python From Novice to Professional" von Magnus Lie Hetland ganz okay, aber lange nicht so gut wie o.g. Titel
Kannst Du noch welche empfehlen?
Verfasst: Montag 26. Oktober 2009, 09:32
von Rebecca
Wenn es darum geht, mehrere Werte in eine Vorlage einzubauen, waere String-Formatting auch was:
Code: Alles auswählen
>>> d = {"hallo": "welt", "foo": "bar"}
>>> print "bla %(hallo)s bla %(foo)s" % d
bla welt bla bar
Bzw. ab Python 2.6 dann auch format und Template.
Verfasst: Montag 26. Oktober 2009, 10:06
von Hyperion
Wobei man speziell bei Rechungen dann ggf. doch an eine Templating Engine wie Jinja2 denke sollte. Dort hat man ja auch die Möglichkeit Schleifen im Template unterzubringen. Haken ist natürlich, dass man als Anfänger neben der Python Syntax, mit der man ggf. noch nicht sehr sicher ist, auch noch eine weitere Syntax zu erlernen...
Vorteil ist aber die klarere Strukturierung und vor allem der Aspekt, sich im Python Code vor allem auf Datenstrukturen beschränken zu können.
Verfasst: Montag 26. Oktober 2009, 10:25
von cofi
Mit einem LaTeX Template kannst du das u.U. schoener gestalten, statt dich in Python mit der Darstellung rumzuquaelen (Hyperion drueckt das aber schoener aus

).
Natuerlich unter der Vorraussetzung, dass du mit LaTeX etwas anfangen kannst.
Hyperion haut mit Jinja2 in die gleiche Kerbe, im Forum gab es AFAIR auch einen Thread (oder Posts), wie man mit Jinja2 LaTeX bekommt.
Verfasst: Montag 26. Oktober 2009, 10:33
von doca82
junge, junge...da gibt es ja Möglichkeiten...
ich glaub ich mach das erst mal selbst...die grafischen Elemente sind sowieso schon auf dem Briefbogen...brauche also ersmal nur schrift...
aber für nachher..wenns ans digitale erstellen und versenden geht...
Gruß