Как это можно записать в одну строку? - PullRequest
3 голосов
/ 15 июня 2009

Ранее я видел некоторые списки Python, но можно ли это сделать в одной строке Python?

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

Ответы [ 4 ]

20 голосов
/ 15 июня 2009
errs = dict((f.auto_id, f.errors) for f in form if f.errors)
9 голосов
/ 15 июня 2009

В Python 3.0 есть расширенное понимание в качестве более короткой / более читаемой формы ансера, предоставленной Steef:

errs = {f.auto_id: f.errors for f in form if f.errors}
4 голосов
/ 15 июня 2009

Возможно, возможно, но согласно правилу «Читаемость имеет значение.» :)

С другой стороны, у вас есть «Плоские лучше, чем вложенные» и «Разреженные лучше, чем плотные». Так что я думаю, это дело вкуса

0 голосов
/ 15 июня 2009

Оба способа вполне читабельны, однако вы должны подумать о будущих разработчиках кода. Иногда явное лучше. Список правил понимания хотя:)

...