komisches iterations Ergebnis
Schreib dir doch ein dondict das sich genau so verhält. Das sind doch nur ein paar Zeilen Code und schon bekommst du statt jetztderdon hat geschrieben:Ich zeige, wie ich Python gerne hätte.
Code: Alles auswählen
foo = {("a", "b"): "c", ("x", "y"): "z"}
for bar, baz in foo:
print bar, baz
a b
x y
Code: Alles auswählen
("a", "b") c
("x", "y") z
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.
Warum auf unpacking in for-Schleifen verzichten? Nur damit ich mir bei dicts ein .items() sparen kann? Schlechter Tausch.derdon hat geschrieben:Darii: Bei Zeile 6 soll eine Exception (TypeError oder SyntaxError, ka) geworfen werden,weil nur ein oder zwei Namen erlaubt sind.
Och nööö, bitte keine Magie in Python.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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
In OCaml gibts an dieser Stelle auch eher keine Magie, würde mich wundern wenn in dessen "Kind" F# das so wäre./me hat geschrieben:Och nööö, bitte keine Magie in Python.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@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.
Der Name `age` ist im ersten Beispiel übrigens ziemlich irreführend.
Wie schon geschrieben, dass kann nicht funktionieren ohne inkonsistent zu werden oder das Unpacking abzuschaffen.DasIch hat geschrieben:Man hat mehrere __iter__ Implementationen, die jeweils passende wird über pattern matching ausgewählt.BlackJack hat geschrieben:wie stellst Du Dir die API dahinter vor!?