Isih Senarai Berbilang Atribut
Isih senarai berdasarkan satu atribut adalah mudah. Walau bagaimanapun, apabila berbilang atribut menentukan susunan isihan, pendekatan yang lebih kompleks diperlukan.
Pertimbangkan senarai senarai berikut:
[[12, 'tall', 'blue', 1], [2, 'short', 'red', 9], [4, 'tall', 'blue', 13]]
Isih senarai ini semata-mata mengikut 'tinggi' atau ' atribut short' boleh dicapai menggunakan sorted(s, key = itemgetter(1)). Walau bagaimanapun, jika susunan isihan mesti berdasarkan kedua-dua atribut ketinggian dan warna, penyelesaian yang lebih cekap diperlukan.
Fungsi Utama Berbilang Atribut
Untuk mengisih senarai dengan berbilang atribut, fungsi utama boleh ditakrifkan yang mengembalikan tuple yang mewakili susunan isihan yang diingini. Sebagai contoh, fungsi kekunci berikut mengisih mengikut ketinggian dahulu dan kemudian mengikut warna:
key = lambda x: (x[1], x[2])
Menggunakan fungsi kekunci ini, senarai boleh diisih seperti berikut:
s = sorted(s, key=key)
Sebagai alternatif, itemgetter () boleh digunakan untuk mencapai hasil yang sama dengan lebih cekap:
import operator key = operator.itemgetter(1, 2)
Fungsi utama ini kedua-duanya lebih pantas dan tidak melibatkan Panggilan fungsi Python.
Isih Terus
Akhir sekali, pendekatan di atas boleh dipermudahkan lagi dengan menggunakan kaedah sort() dan bukannya sorted() dan menetapkan semula. Ini menghapuskan keperluan untuk mencipta senarai baharu:
s.sort(key=key)
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Senarai Dengan Cekap Berdasarkan Pelbagai Atribut dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!