Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencapai Pengisihan Pesanan Semulajadi dalam Python Seperti Fungsi natsort PHP?
Python Equivalent untuk PHP's natsort Function: Natural Order Sorting
Fungsi natsort PHP digunakan untuk mengisih senarai menggunakan "natural order" algoritma yang mengendalikan rentetan yang mengandungi nombor dengan cara yang boleh dibaca oleh manusia. Python tidak mempunyai persamaan yang tepat dengan natsort, tetapi terdapat penyelesaian tersuai yang tersedia.
Satu pendekatan ialah menggunakan gabungan fungsi terbina dalam Python:
<code class="python">import re def try_int(s): "Convert to integer if possible." try: return int(s) except: return s def natsort_key(s): "Used internally to get a tuple by which s is sorted." return map(try_int, re.findall(r'(\d+|\D+)', s)) def natcmp(a, b): "Natural string comparison, case sensitive." return cmp(natsort_key(a), natsort_key(b)) def natcasecmp(a, b): "Natural string comparison, ignores case." return natcmp(a.lower(), b.lower())</code>
Untuk mengisih senarai menggunakan susunan semula jadi:
<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg'] l.sort(natcasecmp)</code>
Satu lagi pendekatan yang menyokong rentetan Unicode ialah menggunakan fungsi kunci tersuai berdasarkan fungsi natural_key Python:
<code class="python">import re def natural_key(string_): """See https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/""" return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_)]</code>
Contoh:
<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg'] l.sort(key=natural_key)</code>
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pengisihan Pesanan Semulajadi dalam Python Seperti Fungsi natsort PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!