3

以前にいくつかのPythonリスト内包表記を見たことがありますが、これはPythonの1行で実行できますか?

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 には、Steef が提供する anser の短くて読みやすい形式として辞書内包表記があります。

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 に答える