[解決済み] Pythonのリストを文字列の長さに基づいてソートする
2022-06-11 14:30:19
質問
文字列のリストを文字列の長さに基づいて並べ替えたいのです。以下のようにsortを使おうとしましたが、正しい結果を得られないようです。
xs = ['dddd','a','bb','ccc']
print xs
xs.sort(lambda x,y: len(x) < len(y))
print xs
['dddd', 'a', 'bb', 'ccc']
['dddd', 'a', 'bb', 'ccc']
何が問題なのでしょうか?
どのように解決するのですか?
を渡すと
lambda
に
sort
に変更する場合、booleanではなくintegerを返す必要があります。 ですから、あなたのコードは次のようになります。
xs.sort(lambda x,y: cmp(len(x), len(y)))
なお
cmp
は組み込み関数で
cmp(x, y)
が -1 を返す場合
x
よりも小さい場合
y
の場合、0
x
と等しい場合は0
y
と等しい場合は1
x
よりも大きい場合は
y
.
もちろん、代わりに
key
パラメータを使うこともできます。
xs.sort(key=lambda s: len(s))
これは
sort
メソッドに、key関数が返すものに基づいて順番を決めるように指示します。
EDIT: BalphaとRuslanの指摘に感謝します。
len
を直接関数のキーパラメータとして渡せばよいということです。
lambda
:
xs.sort(key=len)
また、以下でルスランが指摘しているように、組み込みの
ソートされた
関数ではなく、組み込みの
list.sort
メソッドではなく、 関数を使用することで、既存のリストをインプレースでソートするのではなく、 新しいリストを作成します。
print(sorted(xs, key=len))
関連
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み] リスト項目の出現回数を数えるにはどうしたらいいですか?
-
[解決済み] インスタンスのクラス名を取得する?
最新
-
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ネットワークモデルの学習と予測
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] Pythonの最も効率的な方法は、リスト内の最長文字列を選択することですか?