2009-07-28 6 views
1

code python qui ne cesse de vomir une erreur de syntaxe non valide:Quel est le problème avec ce peu de code python en utilisant lambda?

stat.sort(lambda x1, y1: 1 if x1.created_at < y1.created_at else -1) 
+0

Appartient le ")" manquant au problème ou est-ce une faute de frappe? – Juergen

+0

Pouvez-vous revenir à l'original, la mauvaise version? Sinon, c'est confus. –

+0

Vous devriez accepter l'une des réponses qui ont été utiles;););) –

Répondre

8

Ceci est une meilleure solution:

stat.sort(key=lambda x: x.created_at, reverse=True) 

Ou, pour éviter la lambda tout à fait:

from operator import attrgetter 
stat.sort(key=attrgetter('created_at'), reverse=True) 
+0

+1; J'étais sur le point de mettre ça. – JAB

+1

+1, c'est plus lisible que ma réponse, et apparemment plus rapide: http://docs.python.org/library/stdtypes.html#typesseq-mutable. –

+0

Just added reverse = True pour correspondre à l'exigence d'origine. –

1

Essayez le and-or trick:

lambda x1, y1: x1.created_at < y1.created_at and 1 or -1 
+4

Le et-ou bidouille est moche et n'est plus nécessaire. Des expressions conditionnelles ont été introduites précisément pour l'éviter. –

Questions connexes