Bloody newbe II: mehrere Werte aus Dictionary ausgeben?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
doca82
User
Beiträge: 48
Registriert: Mittwoch 16. September 2009, 19:39
Wohnort: Berlin

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
doca82
User
Beiträge: 48
Registriert: Mittwoch 16. September 2009, 19:39
Wohnort: Berlin

oh sorry Fehlermeldung ist folgende:

Traceback (most recent call last):
File "C:... <module>
print paketB['name', 'preis']
KeyError: ('name', 'preis')

:roll:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Code: Alles auswählen

paket_b = {'name' : 'Basispaket', 'preis' : '85', 'rabatt' : '15'}
print paket_b['name'], paket_b['preis']
doca82
User
Beiträge: 48
Registriert: Mittwoch 16. September 2009, 19:39
Wohnort: Berlin

hmm ja das leuchtet ein...
Danke fürs nicht zu frein zum Antworten sein ;)
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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?
doca82
User
Beiträge: 48
Registriert: Mittwoch 16. September 2009, 19:39
Wohnort: Berlin

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

"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.
doca82
User
Beiträge: 48
Registriert: Mittwoch 16. September 2009, 19:39
Wohnort: Berlin

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?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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 :twisted:).
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.
doca82
User
Beiträge: 48
Registriert: Mittwoch 16. September 2009, 19:39
Wohnort: Berlin

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ß
Antworten