Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencapai Pengisihan Pesanan Semulajadi dalam Python Seperti Fungsi natsort PHP?

Bagaimana untuk Mencapai Pengisihan Pesanan Semulajadi dalam Python Seperti Fungsi natsort PHP?

Susan Sarandon
Susan Sarandonasal
2024-11-06 20:47:02980semak imbas

How to Achieve Natural Order Sorting in Python Like PHP's natsort Function?

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!

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