数字を含む文字列のリストをソートしようとしています
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
数字を含む文字列のリストをソートしようとしています
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
float
(文字列値ではなく)値 に基づいてソートしたいので、試してください:
>>> b = ["949.0","1099.0"]
>>> b.sort(key=float)
>>> b
['949.0', '1099.0']
ソート内でラムダを使用してフロートに変換し、適切にソートします。
a = sorted(a, key=lambda x: float(x))
したがって、それらを文字列として管理しますが、辞書順ではなく値でソートします
誰かが 0.png、1.png、10.png、2.png などの数字と拡張子を扱っている場合...この拡張子では変換できないため、拡張子の前に文字を取得して並べ替える必要があります。フロートへの名前:
myList = sorted(myList, key=lambda x: float(x[:-4]))
int
それらをまたはfloat
または偶数に変換しますdecimal
(末尾の数字があるため)
>>> b = [float(x) for x in b]
>>> b.sort()
>>> b
[949.0, 1099.0]