Seite 1 von 1
Forschleifen verschachtelt
Verfasst: Montag 4. Juni 2007, 20:46
von rolgal_reloaded
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
Verfasst: Montag 4. Juni 2007, 21:01
von BlackJack
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)
Re: Forschleifen verschachtelt
Verfasst: Montag 4. Juni 2007, 21:02
von gerold
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
Verfasst: Montag 4. Juni 2007, 21:17
von rolgal_reloaded
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
rolgal_reloaded
Verfasst: Montag 4. Juni 2007, 21:21
von rolgal_reloaded
Nochwas....
Ging es mit drei verschachtelten Forschleifen auch, nur aus Interesse, oder muss das unweigerlich zu Problemen führen?
LG
rolgal_reloaded
Verfasst: Montag 4. Juni 2007, 21:36
von BlackJack
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.
Verfasst: Montag 4. Juni 2007, 21:46
von rolgal_reloaded
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__
http://www.ubuntuusers.de/paste/11393/
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