首頁  >  文章  >  後端開發  >  如何實作 PHP 的 natsort 函數的 Python 等效項?

如何實作 PHP 的 natsort 函數的 Python 等效項?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-05 21:36:02439瀏覽

How to Implement Python's Equivalent of PHP's natsort Function?

Python 與PHP 的natsort 函數的類似:自然順序排序

自然排序演算法以人類可讀的順序對字串列表進行排序,將數字分組和其他角色在一起。與將「12」視為小於「3」的預設排序方法不同,自然排序會產生 [“1”, “10”, “12”, “3”]。

在 Python 中,一個可以使用自訂鍵函數來實現自然排序功能。以下程式碼片段提供了類似 PHP 的 natsort 的實作:

<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>

範例:

<code class="python">L = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
sorted(L)
# Output: ['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']
sorted(L, key=natural_key)
# Output: ['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']</code>

對於 Unicode 字串,使用 isdecimal() 而不是 isdigit()。對於 Python 2 上的位元組字串,應使用 bytestring.decode().isdigit()。

以上是如何實作 PHP 的 natsort 函數的 Python 等效項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn