Python での自然な文字列の並べ替え
Python では、デフォルトのsorted() 関数を使用して文字列のリストをアルファベット順に並べ替えると、目的の結果が得られない場合があります。 「自然な」秩序。これは、sorted() が文字列を個別の文字として扱うため、不自然な順序付けが行われるためです。
たとえば、次の文字列のリストを考えてみましょう。
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
sorted() を使用してこのリストを並べ替えると、
['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']
文字に続く数字は、次のように扱われるのではなくアルファベット順に並べられるため、これは自然な並べ替え順序ではありません。
自然な文字列の並べ替えを実現するには、natsort ライブラリを利用できます。 Natsort は、数値の自然な順序を維持しながら、より直感的な方法で文字列を並べ替える関数を提供します。
pip を使用して natsort をインストールできます。
pip install natsort
指定された文字列に対して自然な並べ替えを実行するにはリストの場合は、natsorted() 関数を使用します。
from natsort import natsorted x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9'] natsorted(x, key=lambda y: y.lower())
これにより、目的の自然な並べ替えが行われます。 order:
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
natsort_keygen() 関数を使用して並べ替えキーを作成することもできます:
from natsort import natsort_keygen natsort_key = natsort_keygen(key=lambda y: y.lower()) list.sort(key=natsort_key)
これにより、natsorted() と同じ方法でリストが並べ替えられます。
natsorted() と natsort_keygen() に加えて、natsort は os_sorted() も提供しますおよび os_sort_keygen() 関数。これらの関数を使用すると、オペレーティング システムのファイル エクスプローラーの並べ替え動作に従ってリストを並べ替えることができます。この動作は、natsort のデフォルトの動作とは異なる場合があります。
以上がPython で自然な文字列ソートを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。