komisches iterations Ergebnis

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.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Was spricht denn gegen .items?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

derdon hat geschrieben:Ich zeige, wie ich Python gerne hätte.
Schreib dir doch ein dondict das sich genau so verhält. Das sind doch nur ein paar Zeilen Code und schon bekommst du statt jetzt

Code: Alles auswählen

foo = {("a", "b"): "c", ("x", "y"): "z"}
for bar, baz in foo:
    print bar, baz

a b
x y
als Ergebnis

Code: Alles auswählen

("a", "b") c
("x", "y") z
oder so ähnlich.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Darii: Bei Zeile 6 soll eine Exception (TypeError oder SyntaxError, ka) geworfen werden,weil nur ein oder zwei Namen erlaubt sind. Es soll automatisch erkannt werden, ob man nur über die keys (d.h. ein Name zwischen `for` und `in`) oder über key und value iterieren möchte (d.h. sowas wie `for a,b in ...`). Im letzteren Fall soll "hinter den Kulissen" auf dict.iteritems() umgeschaltet werden.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

derdon hat geschrieben:Darii: Bei Zeile 6 soll eine Exception (TypeError oder SyntaxError, ka) geworfen werden,weil nur ein oder zwei Namen erlaubt sind.
Warum auf unpacking in for-Schleifen verzichten? Nur damit ich mir bei dicts ein .items() sparen kann? Schlechter Tausch.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

derdon hat geschrieben:Es soll automatisch erkannt werden, ob man nur über die keys (d.h. ein Name zwischen `for` und `in`) oder über key und value iterieren möchte (d.h. sowas wie `for a,b in ...`). Im letzteren Fall soll "hinter den Kulissen" auf dict.iteritems() umgeschaltet werden.
Och nööö, bitte keine Magie in Python.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

/me hat geschrieben:Och nööö, bitte keine Magie in Python.
In OCaml gibts an dieser Stelle auch eher keine Magie, würde mich wundern wenn in dessen "Kind" F# das so wäre.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@derdon: Dir ist klar, dass ``for a, b in a_dict:`` auch *jetzt* schon funktioniert, wenn die Schlüssel entsprechend aussehen!? Oder ``for x, y, z in a_dict:`` -- was ich sogar schonmal benutzt habe. Da ich mal nicht hoffe, dass Du hier `dict()` besonders behandeln willst -- wie stellst Du Dir die API dahinter vor!?

Der Name `age` ist im ersten Beispiel übrigens ziemlich irreführend.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

BlackJack hat geschrieben:wie stellst Du Dir die API dahinter vor!?
Man hat mehrere __iter__ Implementationen, die jeweils passende wird über pattern matching ausgewählt.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

BlackJack hat geschrieben:Der Name `age` ist im ersten Beispiel übrigens ziemlich irreführend.
Oh, wie peinlich! :oops:
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

DasIch hat geschrieben:
BlackJack hat geschrieben:wie stellst Du Dir die API dahinter vor!?
Man hat mehrere __iter__ Implementationen, die jeweils passende wird über pattern matching ausgewählt.
Wie schon geschrieben, dass kann nicht funktionieren ohne inkonsistent zu werden oder das Unpacking abzuschaffen.
Antworten