次のように、いくつかの値を属性別に並べ替えようとしています。
a = sorted(a, lambda x: x.modified, reverse=True)
次のエラーメッセージが表示されます:
<lambda>() takes exactly 1 argument (2 given)
なぜですか? どうすれば修正できますか?
この質問はもともと Python 2.x 用に書かれました。3.x では、エラー メッセージが異なりますTypeError: sorted expected 1 argument, got 2
。
ベストアンサー1
使用
a = sorted(a, key=lambda x: x.modified, reverse=True)
# ^^^^
Python 2.x では、sorted
関数は次の順序で引数を受け取ります。
sorted(iterable, cmp=None, key=None, reverse=False)
したがって、 がない場合key=
、渡す関数はcmp
2 つの引数を取る関数とみなされます。