Forschleifen verschachtelt

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.
rolgal_reloaded
User
Beiträge: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Forschleifen verschachtelt

Beitragvon rolgal_reloaded » Montag 4. Juni 2007, 20:46

Hallo zusammen,

ich kriegs leider nicht hin.....

Also wir haben drei Listen - ich will was ausprobieren und dazu müssen die Listen so ausehen -

Code: Alles auswählen

indexes = [0, 1]
keys = ["name", "vorname", "straße", "nummer", "plz", "ort"]
entries = [{"name":"Huber", "vorname":"Gerhard", "straße":"Gansenweg", "nummer":"32", "plz":"2345", "ort":"Gansenhausen"}, {"name":"Maier", "vorname":"Peter", "straße":"Kaiserstraße", "nummer":"88", "plz":"3456", "ort":"Kaiserstadt"}]



Es soll ein Stringobjekt zusammengesetzt werden, dass dann so aussieht

1 (index aus indexes + 1) dann die Werte aus jedem Eintrag von entries in der Reihenfolge der Liste keys.

1 Huber Gerhard Gansenweg 32 2345 Gansenhausen
2 Maier Peter Kaiserstraße 88 3456 Kaiserstadt


Geht das und wenn ja wie.

Vielen Dank im voraus,

rolgal_reloaded
BlackJack

Beitragvon BlackJack » Montag 4. Juni 2007, 21:01

Das ginge zum Beispiel so:

Code: Alles auswählen

def main():
    indexes = [0, 1]
    keys = ['name', 'vorname', 'straße', 'nummer', 'plz', 'ort']
    entries = [{'name': 'Huber',
                'vorname': 'Gerhard',
                'straße': 'Gansenweg',
                'nummer': '32',
                'plz': '2345',
                'ort': 'Gansenhausen'},
               {'name': 'Maier',
                'vorname': 'Peter',
                'straße': 'Kaiserstraße',
                'nummer': '88',
                'plz': '3456',
                'ort': 'Kaiserstadt'}]

    result = list()
    for i in indexes:
        entry = entries[i]
        result.append(('%d ' % (i + 1)) + ' '.join(entry[key] for key in keys))
    print '\n'.join(result)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Forschleifen verschachtelt

Beitragvon gerold » Montag 4. Juni 2007, 21:02

rolgal_reloaded hat geschrieben:Geht das und wenn ja wie.

Hallo rolgal_reloaded!

Natürlich geht das. Du solltest aber als Key im Dictionary keine Umlaute verwenden. Das kann schief gehen. Zumindest in Verbindung mit string.Template(). Aber das muss man ja nicht unbedingt einsetzen. ;-)

Z.B. so:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

from string import Template


indexes = [0, 1]
keys = ["name", "vorname", "strasse", "nummer", "plz", "ort"]
entries = [
    {
        "name":"Huber",
        "vorname":"Gerhard",
        "strasse":"Gansenweg",
        "nummer":"32",
        "plz":"2345",
        "ort":"Gansenhausen"
    },
    {
        "name":"Maier",
        "vorname":"Peter",
        "strasse":"Kaiserstraße",
        "nummer":"88",
        "plz":"3456",
        "ort":"Kaiserstadt"
    }
]

template_string = "$index"
for key in keys:
    template_string += " $" + key

print template_string

for index in indexes:
    print Template(template_string).safe_substitute(entries[index], index = index + 1)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
rolgal_reloaded
User
Beiträge: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Montag 4. Juni 2007, 21:17

Find ich echt klasse, wie schnell ihr sowas habt.
Da hauts mich echt um.

@Gerold:
Ich werde das bei den Keys berücksichtigen.

Das erste liest sich für mich irgendwie leichter.

Also dann bis zur nächsten Frage :D

rolgal_reloaded
rolgal_reloaded
User
Beiträge: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Montag 4. Juni 2007, 21:21

Nochwas....

Ging es mit drei verschachtelten Forschleifen auch, nur aus Interesse, oder muss das unweigerlich zu Problemen führen?

LG

rolgal_reloaded
BlackJack

Beitragvon BlackJack » Montag 4. Juni 2007, 21:36

Es ginge auch mit *zwei* ``for``-Schleifen. Du kannst aus dem inneren Generatorausdruck eine weitere Schleife machen. Was Du mit einer dritten Schleife machen willst, weiss ich nicht. ;-)
rolgal_reloaded
User
Beiträge: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Montag 4. Juni 2007, 21:46

BlackJack hat geschrieben:Es ginge auch mit *zwei* ``for``-Schleifen. Du kannst aus dem inneren Generatorausdruck eine weitere Schleife machen. Was Du mit einer dritten Schleife machen willst, weiss ich nicht. ;-)


Ich brüte was aus, ggg.

Als ich die Indexes noch automatisch beziehen konnte, sah das so aus:
siehe __str__

[url]
http://www.ubuntuusers.de/paste/11393/
[/url]

Da ich jetzt für meinen "Geniestreich" die indexes nicht mehr wie oben beziehen kann, dachte ich: eine weitere Liste, eine weitere Forschleife.

LG

r_r

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder