Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Isih Satu Senarai Berdasarkan Nilai Senarai Sepadan dalam Python?

Bagaimanakah Saya Boleh Isih Satu Senarai Berdasarkan Nilai Senarai Sepadan dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-19 08:30:10650semak imbas

How Can I Sort One List Based on the Values of a Corresponding List in Python?

Isih Senarai Menggunakan Nilai Sepadan daripada Senarai Selari

Anda mempunyai senarai rentetan (X) dan senarai integer yang sepadan (Y ). Matlamat anda adalah untuk mengisih rentetan dalam senarai X berdasarkan nilai dalam senarai Y. Dalam kes ini, output yang dikehendaki ialah:

["a", "d", "h", "b", "c", "e", "i", "f", "g"]

Penyelesaian Kod Terpendek

Cara terpendek untuk mencapai ini ialah menggunakan pemahaman senarai dengan fungsi diisih dan zip:

[x for _, x in sorted(zip(Y, X))]

Kod ini mengezip senarai bersama-sama dan kemudian mengisihnya berdasarkan elemen pertama (integer daripada senarai Y). Ia kemudian mengekstrak elemen kedua (rentetan daripada senarai X) daripada senarai diisih.

Contoh

Pertimbangkan senarai:

X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
Y = [ 0,   1,   1,    0,   1,   2,   2,   0,   1]

Menggunakan kod:

Z = [x for _,x in sorted(zip(Y,X))]
print(Z)  # ["a", "d", "h", "b", "c", "e", "i", "f", "g"]

Umum Penyelesaian

Penyelesaian yang lebih umum ialah menggunakan fungsi diisih dengan fungsi kekunci tersuai:

[x for _, x in sorted(zip(Y, X), key=lambda pair: pair[0])]

Di sini, fungsi kekunci mengekstrak elemen pertama daripada setiap pasangan dalam zip senarai, membolehkan anda mengisih berdasarkan integer dalam senarai Y.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Satu Senarai Berdasarkan Nilai Senarai Sepadan dalam Python?. 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