Mengisih Senarai Python mengikut Pelbagai Medan
Mengisih senarai Python mengikut satu medan adalah tugas biasa, tetapi bagaimana jika anda perlu isih mengikut berbilang medan?
Pertimbangkan senarai berikut yang dibuat daripada CSV yang diisih fail:
list1 = sorted(csv1, key=operator.itemgetter(1))
Ini mengisih senarai mengikut medan kedua. Namun, bagaimana jika anda ingin mengisih dahulu mengikut medan pertama dan kemudian mengikut medan kedua?
Penyelesaiannya ialah menggunakan fungsi lambda sebagai hujah utama kepada fungsi sorted() . Fungsi lambda ialah fungsi tanpa nama yang boleh digunakan untuk menentukan kriteria pengisihan mudah. Dalam kes ini, fungsi lambda mengambil satu hujah, yang mewakili elemen dalam senarai dan mengembalikan tuple yang mengandungi dua medan yang anda mahu isih mengikut.
Sebagai contoh, untuk mengisih senarai mengikut medan pertama dan kedua, anda boleh menggunakan fungsi lambda berikut:
sorted_list = sorted(list1, key=lambda x: (x[0], x[1]))
Fungsi lambda ini mengembalikan tuple yang mengandungi medan pertama dan kedua senarai unsur. Senarai kemudian diisih mengikut tupel ini, yang menyebabkan senarai diisih dahulu mengikut medan pertama dan kemudian dengan medan kedua.
Anda juga boleh menggunakan fungsi lambda untuk mengisih mengikut satu medan menaik dan satu lagi menurun. Contohnya, untuk mengisih senarai mengikut medan pertama menaik dan medan kedua menurun, anda boleh menggunakan fungsi lambda berikut:
sorted_list = sorted(list1, key=lambda x: (x[0], -x[1]))
Fungsi lambda ini mengembalikan tuple yang mengandungi medan pertama elemen senarai dan negatif medan kedua. Senarai kemudian diisih mengikut tupel ini, yang menyebabkan senarai diisih mengikut medan pertama menaik dan medan kedua menurun.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Senarai Python mengikut Pelbagai Medan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!