Rumah > pembangunan bahagian belakang > Tutorial Python > 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
Lepaskan: 2024-11-06 20:47:02
asal
1068 orang telah melayarinya

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

Untuk mengisih senarai menggunakan susunan semula jadi:

<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
l.sort(natcasecmp)</code>
Salin selepas log masuk

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

Contoh:

<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
l.sort(key=natural_key)</code>
Salin selepas log masuk

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!

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