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
Lepaskan: 2024-12-19 08:30:10
asal
599 orang telah melayarinya

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))]
Salin selepas log masuk

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]
Salin selepas log masuk

Menggunakan kod:

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

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])]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan