Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menyusun Senarai Senarai dengan Berbilang Atribut dalam Python dengan Cekap?

Bagaimanakah Saya Boleh Menyusun Senarai Senarai dengan Berbilang Atribut dalam Python dengan Cekap?

Barbara Streisand
Barbara Streisandasal
2024-12-10 22:52:15225semak imbas

How Can I Efficiently Sort a List of Lists by Multiple Attributes in Python?

Isih Berbilang Atribut dalam Senarai

Isih senarai mengikut satu atribut adalah mudah menggunakan fungsi sorted() Python dan hujah utama. Walau bagaimanapun, pengisihan mengikut berbilang atribut memberikan cabaran.

Perumusan Masalah:

Bagaimanakah kita boleh mengisih senarai senarai dengan berbilang atribut dengan cepat, seperti yang dinyatakan dalam soalan asal?

Penyelesaian:

Terdapat dua yang cekap kaedah untuk pengisihan berbilang atribut dalam senarai:

  1. Menggunakan Fungsi Lambda sebagai Kunci:

    s = sorted(s, key = lambda x: (x[1], x[2]))

    Fungsi lambda ini mengambil setiap subsenarai x dan mengembalikan tuple yang mengandungi elemen kedua dan ketiga, dengan berkesan menentukan susunan isihan berdasarkan kedua-duanya atribut.

  2. **Menggunakan operator.itemgetter():

    import operator
    s = sorted(s, key = operator.itemgetter(1, 2))

    operator.itemgetter() mengembalikan fungsi yang mengekstrak elemen yang ditentukan daripada setiap subsenarai, membolehkan pengisihan berdasarkan berbilang atribut.

Dalam kedua-dua kes, susunan isihan ditentukan mengikut susunan indeks atribut yang dinyatakan dalam fungsi utama atau argumen itemgetter.

Nota Tambahan:

Untuk pengisihan di tempat, anda boleh menggunakan s.sort( ) secara langsung dengan fungsi kekunci yang sesuai:

s.sort(key = operator.itemgetter(1, 2))

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Senarai Senarai dengan Berbilang Atribut dalam Python dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn