以前はPythonのリスト内包を見たことがありますが、これはPythonの1行で行うことができますか?これはどのようにして1行に書くことができますか?
errs = {}
for f in form:
if f.errors:
errs[f.auto_id] = f.errors
以前はPythonのリスト内包を見たことがありますが、これはPythonの1行で行うことができますか?これはどのようにして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)
それはおそらくかもしれないが、「可読性カウント。」ルール(PEP 20)あたりとして、私はそれが悪いアイデアだと思います。 :)あなたが持っている一方
「フラットは、ネストされたよりも良いですが。」と「スパースが。密よりも優れている」ので、私はそれが味:)の問題だと思う
のPython 3.0は、dictの内包表記などがありますSteefによって提供さANSERの短い/より読みやすい形式:
errs = {f.auto_id: f.errors for f in form if f.errors}
どちらの方法は、しかし、あなたは、コードの将来のメンテナを考える必要があり、非常に読みやすいです。明示的な方が良い場合もあります。リストの理解はルールだと思う:)
ハスケルの背景から来て、私はより短いものを好むだろう。私は時々読みやすさは価値があるとあなたに同意しますが、この特定のケースでは、私の目はそのような単純なことのために4本の線を見ることに傷つきます。 –
私は、one-liner dict()バージョンは自己文書化しているので読みやすいと主張します。これは、特定のキーと値のペアを持つdictを作成していることを明確に示しています。 4ライナーは悪くありませんが、「ちょうどdictを作成している」と伝えるのに少し時間がかかります。 –