34

数字を含む文字列のリストをソートしようとしています

a = ["1099.0","9049.0"]
a.sort()
a
['1099.0', '9049.0']

b = ["949.0","1099.0"]
b.sort()    

b
['1099.0', '949.0']

a
['1099.0', '9049.0']

しかし、リストbは並べ替えであり、リストではありませんa

4

4 に答える 4

84

float(文字列値ではなく)値 に基づいてソートしたいので、試してください:

>>> b = ["949.0","1099.0"]
>>> b.sort(key=float)
>>> b
['949.0', '1099.0']
于 2013-07-04T15:51:05.323 に答える
20

ソート内でラムダを使用してフロートに変換し、適切にソートします。

a = sorted(a, key=lambda x: float(x))

したがって、それらを文字列として管理しますが、辞書順ではなく値でソートします

于 2013-07-04T15:52:16.497 に答える
9

誰かが 0.png、1.png、10.png、2.png などの数字と拡張子を扱っている場合...この拡張子では変換できないため、拡張子の前に文字を取得して並べ替える必要があります。フロートへの名前:

myList = sorted(myList, key=lambda x: float(x[:-4]))
于 2020-05-12T11:40:00.743 に答える
3

intそれらをまたはfloatまたは偶数に変換しますdecimal(末尾の数字があるため)

>>> b = [float(x) for x in b]
>>> b.sort()
>>> b
[949.0, 1099.0]
于 2013-07-04T15:50:27.020 に答える