怎么能写在一行?

时间:2009-06-15 09:38:49

标签: python django dictionary list-comprehension

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

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

4 个答案:

答案 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)

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