3 Stimmen

Wie kann dies in einer einzigen Zeile geschrieben werden?

Ich habe gesehen, einige Python Liste Verständnis vor, aber kann dies in einer einzigen Zeile von Python getan werden?

errs = {}
for f in form:
    if f.errors:
        errs[f.auto_id] = f.errors

20voto

Steef Punkte 30321
errs = dict((f.auto_id, f.errors) for f in form if f.errors)

9voto

Python 3.0 hat dict comprehensions als eine kürzere/lesbarere Form der von Steef bereitgestellten anser:

errs = {f.auto_id: f.errors for f in form if f.errors}

4voto

mikl Punkte 22841

Wahrscheinlich könnte es das sein, aber gemäß der Regel "Lesbarkeit zählt" ( PEP 20 ), würde ich sagen, dass es eine schlechte Idee ist :)

Andererseits gibt es "Flach ist besser als verschachtelt" und "Spärlich ist besser als dicht", also ist es wohl eine Frage des Geschmacks :)

0voto

Nick Martin Punkte 172

Beide Wege sind recht gut lesbar, allerdings sollte man an die zukünftigen Betreuer des Codes denken. Manchmal ist explizit besser. Listenauffassungen sind jedoch die Regel :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X