【发布时间】:2010-11-02 23:21:41
【问题描述】:
我以前见过一些 Python 列表推导,但是这可以在一行 Python 中完成吗?
errs = {}
for f in form:
if f.errors:
errs[f.auto_id] = f.errors
【问题讨论】:
标签: python django dictionary list-comprehension
我以前见过一些 Python 列表推导,但是这可以在一行 Python 中完成吗?
errs = {}
for f in form:
if f.errors:
errs[f.auto_id] = f.errors
【问题讨论】:
标签: python django dictionary list-comprehension
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),我会说这是个坏主意。 :)
另一方面,您有“平面优于嵌套”。和“稀疏胜于密集。”,所以我想这是一个品味问题:)
【讨论】:
这两种方式都非常易读,但是您应该考虑代码的未来维护者。有时明确的更好。列表推导规则虽然:)
【讨论】: