Pythonでは、日付をラムダでソートしようとしています。エラーメッセージが理解できません。メッセージは次のとおりです。
<lambda>() takes exactly 1 argument (2 given)
私が持っている行は
a = sorted(a, lambda x: x.modified, reverse=True)
つかいます
a = sorted(a, key=lambda x: x.modified, reverse=True)
# ^^^^
Python 2.xでは、sorted
関数は次の順序で引数を取ります。
sorted(iterable, cmp=None, key=None, reverse=False)
したがって、key=
がない場合、渡す関数は、2つの引数を取るcmp
関数と見なされます。
lst = [('candy','30','100'), ('Apple','10','200'), ('baby','20','300')]
lst.sort(key=lambda x:x[1])
print(lst)
次のように印刷されます。
[('Apple', '10', '200'), ('baby', '20', '300'), ('candy', '30', '100')]
Pythonリストには、データをソートするための2つの組み込み方法があります。
sort() — A method that modifies the list in-place
sorted() — A built-in function that builds a new sorted list from an iterable
要件に基づいて、次の2つから選択できます。
元のリストを保持する場合は、ソート機能を使用できます。元のリストが必要ない場合は、ソート機能を使用できます。
ソートまたはソートを行う前に、ラムダを理解する必要があります。
ラムダは無名関数であり、無名関数は名前なしで定義された関数です。この投稿ではそれをかなりうまく説明しているようです。
https://www.programiz.com/python-programming/anonymous-function
Lambda関数は、評価して返される式が1つしかないため、インラインで呼び出すのに適しています。ラムダの構文は次のとおりです。
ラムダ引数:式
ソートされた関数の使用方法を見てみましょう:
student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),]
sorted(student_tuples, key=lambda student: student[2])
出力:[( 'dave'、 'B'、10)、( 'jane'、 'B'、12)、( 'john'、 'A'、15)]
ここでは、tuple [2]であるキーパラメーターに基づいて、タプルを持つstudent_tuplesのリストがソートされていることがわかります。