3

我以前看过一些 Python 列表推导,但这可以在一行 Python 中完成吗?

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

4 回答 4

20
errs = dict((f.auto_id, f.errors) for f in form if f.errors)
于 2009-06-15T09:40:24.350 回答
9

Python 3.0 将 dict 理解作为 Steef 提供的分析器的更短/更易读的形式:

errs = {f.auto_id: f.errors for f in form if f.errors}
于 2009-06-15T11:50:21.587 回答
4

可能是这样,但根据“可读性很重要”。规则(PEP 20),我会说这是个坏主意。:)

另一方面,您有“平面优于嵌套”。和“稀疏比密集好。”,所以我想这是一个品味问题 :)

于 2009-06-15T09:40:44.770 回答
0

这两种方式都非常易读,但是您应该考虑代码的未来维护者。有时明确的更好。列表推导规则虽然:)

于 2009-06-15T13:51:05.917 回答