我以前看过一些 Python 列表推导,但这可以在一行 Python 中完成吗?
errs = {}
for f in form:
if f.errors:
errs[f.auto_id] = f.errors
我以前看过一些 Python 列表推导,但这可以在一行 Python 中完成吗?
errs = {}
for f in form:
if f.errors:
errs[f.auto_id] = f.errors
errs = dict((f.auto_id, f.errors) for f in form if f.errors)
Python 3.0 将 dict 理解作为 Steef 提供的分析器的更短/更易读的形式:
errs = {f.auto_id: f.errors for f in form if f.errors}
可能是这样,但根据“可读性很重要”。规则(PEP 20),我会说这是个坏主意。:)
另一方面,您有“平面优于嵌套”。和“稀疏比密集好。”,所以我想这是一个品味问题 :)
这两种方式都非常易读,但是您应该考虑代码的未来维护者。有时明确的更好。列表推导规则虽然:)