Pythonでラムダを使ってソートする方法 質問する

Pythonでラムダを使ってソートする方法 質問する

次のように、いくつかの値を属性別に並べ替えようとしています。

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=、渡す関数はcmp2 つの引数を取る関数とみなされます。

おすすめ記事