ホームページ  >  記事  >  バックエンド開発  >  PHP の natsort のような自然な順序のソートを Python で実現するにはどうすればよいですか?

PHP の natsort のような自然な順序のソートを Python で実現するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-05 14:57:02882ブラウズ

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

Python の自然順序ソート用の PHP の natsort に相当します

Python でよくある質問は、リストを自然順序でソートする方法です。 PHPのnatsort関数に。標準の並べ替えとは異なり、自然順序では、文字列ではなく数値が数値として考慮されます。

たとえば、ファイル名のリストを並べ替えることを考えてみましょう。

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

この標準的な並べ替えの結果は次のようになります。

['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']

ただし、自然な順序での並べ替えを実現するために、Python は可能であれば文字列を数値タプルに変換する重要な関数を提供します。これにより、適切な数値比較が可能になります。

実装例は次のとおりです。

<code class="python">import re

def natsort_key(s):
    return map(int, re.findall(r'(\d+)', s))</code>

並べ替え中にこのキーを適用すると、望ましい自然な順序が得られます。

<code class="python">l.sort(key=natsort_key)</code>

出力は次のようになります。

['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']

または、大文字と小文字を区別しない並べ替えが必要な場合は、より完全な実装を使用できます。

<code class="python">def natcasecmp(a, b):
    return natcmp(a.lower(), b.lower())</code>

これにより、大文字と小文字を区別しない自然な順序の並べ替えが提供されます。

以上がPHP の natsort のような自然な順序のソートを Python で実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。