2009-06-15 12 views

Répondre

20
errs = dict((f.auto_id, f.errors) for f in form if f.errors) 
4

Il pourrait probablement, mais selon les « comptes Lisibilité ». Règle (PEP 20), je dirais que c'est une mauvaise idée. :)

D'autre part, vous avez « Flat est mieux que imbriqué. » Et « Sparse est mieux que dense. », Donc je suppose que c'est une question de goût :)

+0

Venant d'un arrière-plan Haskell, je préfère le plus court. Je suis d'accord avec vous que parfois la lisibilité vaut plus, mais dans ce cas particulier, mes yeux ont mal à voir quatre lignes pour une chose si simple. –

+0

Je dirais que la version dict() de one-liner est plus lisible parce qu'elle est auto-documentée - elle montre clairement qu'elle crée une dict avec certaines paires clé-valeur. Le quatre lignes n'est pas mauvais, mais cela prend un peu plus de temps pour dire que c'est "juste créer un dict". –

9

Python 3.0 a dict compréhensions que une forme plus courte/plus lisible du Anser fourni par Steef:

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

les deux méthodes sont très lisibles, mais vous devriez penser à l'avenir mainteneurs du code. Parfois, explicite est mieux. Répertoriez les règles de compréhension bien que :)

Questions connexes