自然排序:排列嵌入數字的字串的藝術
用數字對字串進行排序可能是一項棘手的任務,但這對許多人來說是必不可少的應用程式。在本次問答中,我們將探索實現類似人類排序結果的解決方案,讓您可以按邏輯順序排列「something1」、「something2」和「something17」等字串。
挑戰:
給定的輸入由包含數字的字串清單組成。然而,預設的 sort() 方法無法以對人類有意義的方式排列它們。例如,以下列表:
something1 something12 something17 something2 something25 something29
將排序為:
something1 something12 something17 something2 something25 something29
解決方案:自然鍵
解決方案在於使用自然鍵,這是一種為人類可讀性而設計的排序方法。自然鍵將字串中的數字視為單獨的實體,同時保持字串的整體結構。
這是使用natural_keys函數的Python實現:
import re def natural_keys(text): return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
當應用於輸入列表時,結果將是:
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
附加註意事項:
如果需要對浮點數的字串進行排序,可以修改natural_keys函數中的正規表示式以匹配浮點數而不是整數。
def natural_keys(text): return [float(c) if c.isdigit() or '.' in c else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
此增強功能可讓您對字串進行排序,例如:
something1 something2 something1.0 something1.25 something1.105
,如下所示順序:
['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
透過利用自然鍵的強大功能,您現在可以輕鬆地以人類可讀的方式排列嵌入數字的字串,使您的資料操作任務更加高效和直觀。
以上是如何在 Python 中自然地對嵌入數字的字串進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!