Pernyataan Masalah
Isih rentetan secara leksikografi tidak selalu menghasilkan susunan yang diingini. Sebagai contoh, senarai yang mengandungi nilai berangka boleh diisih mengikut digit dan bukannya nombor bulat. Isu ini berpunca daripada mekanisme pengisihan lalai, yang merawat setiap aksara secara bebas.
Fungsi Terbina dalam
Walaupun Python tidak menyediakan fungsi terbina dalam khusus untuk semula jadi pengisihan rentetan, terdapat perpustakaan pihak ketiga yang boleh menangani isu ini. Salah satu perpustakaan tersebut ialah natsort, yang menawarkan pelbagai kaedah untuk melaksanakan pengisihan semula jadi.
Perpustakaan natsort
Natsort menyediakan dua pendekatan utama untuk pengisihan semula jadi: menggunakan fungsi pengisihan atau a kunci pengisihan.
Fungsi Isih
Kepada gunakan fungsi pengisihan natsort, mulakan dengan mengimportnya seperti berikut:
from natsort import natsorted
Anda kemudian boleh mengisih senarai rentetan menggunakan fungsi ini:
x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9'] sorted_list = natsorted(x, key=lambda y: y.lower())
Sebagai alternatif, anda boleh menentukan algoritma untuk mengabaikan sensitiviti huruf besar kecil:
sorted_list = natsorted(x, alg=ns.IGNORECASE)
Isih Kekunci
Jika anda perlu mengisih senarai rentetan menggunakan kekunci isihan, import yang berikut:
from natsort import natsort_keygen
Mencipta kekunci isihan melibatkan penentuan fungsi untuk mengekstrak kunci daripada setiap rentetan, yang biasanya digunakan apabila rentetan tersebut mempunyai data terbenam. Contohnya:
keygen = natsort_keygen(key=lambda y: y.lower()) sorted_list = sorted(l1, key=keygen)
Pilihan Lain
Untuk senario pengisihan semula jadi yang lebih kompleks, perpustakaan natsort menyediakan fungsi tambahan dan pilihan penyesuaian. Sila rujuk dokumentasi perpustakaan untuk butiran lanjut. Selain itu, pada versi 7.1.0, natsort menawarkan fungsi os_sorted untuk mengisih rentetan dalam susunan penyemak imbas sistem fail setempat.
Atas ialah kandungan terperinci Bagaimanakah Python Boleh Melakukan Isih Rentetan Semulajadi dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!