Wie Generator "zusammenführen"?

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
Benutzeravatar
snafu
User
Beiträge: 5440
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Freitag 6. Juni 2008, 09:55

Hi!

Ich habe verschiedene Generator Objekte, die Inforamtionen von einer Website enthalten, welche ich mit mit BeautifulSoup bekommen habe:

Generator A: Name des Benutzers
Generator B: Stimmung des Benutzers
Generator C: Wann hat der User zuletzt die Stimmung geändert

Aus diesen drei Angaben will ich Tupel erzeugen nach dem Schema:

Code: Alles auswählen

ErstesElementGeneratorA = (ErstesElementGeneratorB, ErstesElementGeneratorC)
Damit ich zb sowas habe:

Code: Alles auswählen

Anna = ('schlechtgelaunt', 'vor 10 Minuten')
Anzeige wäre dann bspw mit:

Code: Alles auswählen

name = 'Anna'
mood, lastChange = moodInfo('Anna')
print name, mood, lastChange
Wie bekomme ich die oben beschriebene Umstrukturierung am elegantesten hin?

PS: Beispiel wie ein Generator erzeugt wurde (falls relevant) :

Code: Alles auswählen

names = (''.join(username(text=True))
                 for username in soup('a', target='_self'))
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Freitag 6. Juni 2008, 10:25

Moin,

schau dir mal die itertools an. Da gibt's eine izip-Funktion, die genau das macht, was du willst.

Gruß,
Manuel
Benutzeravatar
snafu
User
Beiträge: 5440
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Mittwoch 18. Juni 2008, 15:20

Danke, ich mach's jetzt so:

Code: Alles auswählen

user = {}

for name, mood, change in izip(names, moods, lastChange):
    user[name] = (mood, change)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Mittwoch 18. Juni 2008, 18:44

Und weil jeder Einzeiler mag (;)):

Code: Alles auswählen

user = dict((name, (mood, change)) for name, mood, change in izip(names, moods, lastChange))
Benutzeravatar
snafu
User
Beiträge: 5440
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Mittwoch 18. Juni 2008, 20:19

Danke, yogi. :)
Antworten