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