ホームページ > バックエンド開発 > Python チュートリアル > Python で自然な文字列ソートを実現するにはどうすればよいですか?

Python で自然な文字列ソートを実現するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-26 11:17:09
オリジナル
442 人が閲覧しました

How Can I Achieve Natural String Sorting in Python?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート