以前にいくつかのPythonリスト内包表記を見たことがありますが、これはPythonの1行で実行できますか?
errs = {}
for f in form:
if f.errors:
errs[f.auto_id] = f.errors
以前にいくつかのPythonリスト内包表記を見たことがありますが、これはPythonの1行で実行できますか?
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 には、Steef が提供する anser の短くて読みやすい形式として辞書内包表記があります。
errs = {f.auto_id: f.errors for f in form if f.errors}
おそらくそうかもしれませんが、「読みやすさの重要性」によると。ルール(PEP 20)、それは悪い考えだと思います。:)
一方、「フラットはネストよりも優れています」というものがあります。そして「スパースはデンスよりも優れている」ので、それは好みの問題だと思います:)
どちらの方法も非常に読みやすいですが、コードの将来のメンテナーについて考える必要があります。明示的な方が良い場合もあります。ただし、内包規則をリストします:)