[解決済み】文字列のリストをソートする方法は?
2022-03-24 23:54:48
質問
Pythonでアルファベット順のリストを作成する最も良い方法は何ですか?
どのように解決するのですか?
基本的な答えです。
mylist = ["b", "C", "A"]
mylist.sort()
これは、元のリストを変更します (つまり、インプレースでソートします)。元のリストを変更せずに、ソートされたリストのコピーを取得するには
sorted()
関数を使用します。
for x in sorted(mylist):
print x
しかし、上記の例はロケールを考慮せず、大文字小文字を区別してソートしているため、少し素朴な感じになっています。そこで、オプションのパラメータ
key
を使用すると、カスタムソート順を指定できます(別の方法として
cmp
は、複数回評価する必要があるため、非推奨のソリューションです。
key
は要素ごとに一度だけ計算されます)。
そこで、言語固有の規則を考慮して、現在のロケールに従ってソートするために、(
cmp_to_key
はfunctoolsのヘルパー関数です)。
sorted(mylist, key=cmp_to_key(locale.strcoll))
そして最後に、必要なら カスタムロケール でソートします。
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'),
key=cmp_to_key(locale.strcoll)) == [u'aa', u'Ab', u'ad']
最後に、大文字小文字を区別しないソートの例で
lower()
これらのメソッドは、ASCII 文字のサブセットに対してのみ機能するため、正しくありません。この2つは、英語以外のデータに対しては間違っています。
# this is incorrect!
mylist.sort(key=lambda x: x.lower())
# alternative notation, a bit faster, but still wrong
mylist.sort(key=str.lower)
関連
-
Pythonによるjieba分割ライブラリ
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
Pythonコンテナのための組み込み汎用関数操作
-
Pythonによるjieba分割ライブラリ
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない