🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Q&A

解決済

2回答

737閲覧

pythonのソートが思惑通りに行きません、原因と対処法を教えてください。

malia

総合スコア9

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

0グッド

0クリップ

投稿2019/10/08 12:19

1.txtから100.txtまでの昇順で表示したいのですがうまく実行できません。

python

1oil.sort() 2 3['1.txt', '10.txt', '100.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt', '2.txt', '20.txt', '21.txt', '22.txt', '23.txt', '24.txt', '25.txt', '26.txt', '27.txt', '28.txt', '29.txt', '3.txt', '30.txt', '31.txt', '32.txt', '33.txt', '34.txt', '35.txt', '36.txt', '37.txt', '38.txt', '39.txt', '4.txt', '40.txt', '41.txt', '42.txt', '43.txt', '44.txt', '45.txt', '46.txt', '47.txt', '48.txt', '49.txt', '5.txt', '50.txt', '51.txt', '52.txt', '53.txt', '54.txt', '55.txt', '56.txt', '57.txt', '58.txt', '59.txt', '6.txt', '60.txt', '61.txt', '62.txt', '63.txt', '64.txt', '65.txt', '66.txt', '67.txt', '68.txt', '69.txt', '7.txt', '70.txt', '71.txt', '72.txt', '73.txt', '74.txt', '75.txt', '76.txt', '77.txt', '78.txt', '79.txt', '8.txt', '80.txt', '81.txt', '82.txt', '83.txt', '84.txt', '85.txt', '86.txt', '87.txt', '88.txt', '89.txt', '9.txt', '90.txt', '91.txt', '92.txt', '93.txt', '94.txt', '95.txt', '96.txt', '97.txt', '98.txt', '99.txt']

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

oil.sort(key=lambda a: int(a.split('.')[0]))

ソート HOW TO — Python 3.7.5rc1 ドキュメント

投稿2019/10/08 12:39

yuokada

総合スコア550

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

各要素が文字列型である以上、コンピュータは 10 や 18 を数値と見做していません。
単純に辞書順にソートを行おうとします。

この辺りの理屈は、0 → a, 1 → b, ... とでも置き換えて考えると実感しやすいでしょう。


要素を評価するための関数を作り、key引数として渡せば良いです。

Python

1def key_func(src): 2 return int(src.split('.')[0]) 3 4ret = key_func('1.txt') 5print(type(ret), ret) # <class 'int'> 1 6 7ret = key_func('99.txt') 8print(type(ret), ret) # <class 'int'> 99 9 10oil.sort(key=key_func) 11print(oil) # ['1.txt', '2.txt', '3.txt', ...]

key関数はラムダ式で作ってやっても良いです。

Python

1oil.sort(key=lambda s: int(s.split('.')[0]))

投稿2019/10/08 12:34

LouiS0616

総合スコア35668

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

malia

2019/10/08 12:35

数値だと思ってました 盲点でした ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問