Dengan Python, saya mencoba mengurutkan berdasarkan tanggal dengan lambda. Saya tidak dapat memahami pesan kesalahan saya. Pesannya adalah:
<lambda>() takes exactly 1 argument (2 given)
Garis yang saya miliki adalah
a = sorted(a, lambda x: x.modified, reverse=True)
Jawaban:
Menggunakan
Pada Python 2.x,
sorted
fungsi mengambil argumennya dalam urutan ini:jadi tanpa
key=
, fungsi yang Anda lewati akan dianggap sebagaicmp
fungsi yang membutuhkan 2 argumen.sumber
lambda
dengan parameter lain karenacmp
fungsi membutuhkan 2?cmp
, fungsi pembanding mengambil dua argumen. Jika Anda tidak menentukan bahwa Anda melewati akey
, itu diasumsikan dari urutan parameter fungsi yang Anda lewati pembanding. Lambda Anda mengambil satu parameter, karena itu bukan pembanding yang valid dan itulah yang dikatakan kesalahan.Ini akan dicetak sebagai berikut:
sumber
Daftar Python memiliki dua cara bawaan untuk mengurutkan data:
Berdasarkan kebutuhan Anda, Anda dapat memilih di antara dua ini:
jika Anda ingin menyimpan daftar asli, Anda dapat menggunakan fungsi diurutkan atau jika Anda tidak perlu daftar asli Anda dapat menggunakan fungsi sortir.
Sebelum melakukan sortir atau sortir, kita perlu memahami lambda.
Lambda adalah fungsi anonim dan fungsi anonim adalah fungsi yang didefinisikan tanpa nama, posting ini tampaknya menjelaskannya dengan cukup baik.
https://www.programiz.com/python-programming/anonymous-function
Fungsi Lambda bagus untuk memanggil in-line karena mereka hanya memiliki satu ekspresi yang dievaluasi dan dikembalikan. Mereka sintaks untuk lambda adalah:
argumen lambda: ekspresi
mari kita lihat bagaimana cara menggunakan fungsi yang diurutkan:
output: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
Di sini kita dapat melihat daftar student_tuples yang memiliki tuple diurutkan berdasarkan parameter kunci asalkan siswa [2].
sumber