2009-07-28 3 views
1

無効な構文エラーを投げ続けていくつかのpythonコード:lambdaを使用してこのPythonコードの何が問題になっていますか?

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

問題に「)」がないか、それとも入力ミスですか? – Juergen

+0

オリジナルの間違ったバージョンに戻すことはできますか?それ以外の場合は混乱します。 –

+0

有用な回答の1つを受け入れる必要があります;););) –

答えて

8

これは、より良いソリューションです:

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

あるいは、回避するために、ラムダ:

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

+1;私はそれをちょうど入れようとしていた。 – JAB

+1

+1、それは私の答えより読みやすく、明らかに速いです:http://docs.python.org/library/stdtypes.html#typesseq-mutable。 –

+0

元の要件に一致するように、単にreverse = Trueが追加されました。 –

1

は試してみてくださいand-or trick

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

and-or hackは醜いので、もう必要ありません。それを避けるために条件式が正確に導入されました。 –

関連する問題