Ответ 1
Вы хотите сортировать на основе значений float
(а не строковых значений), поэтому попробуйте:
>>> b = ["949.0","1099.0"]
>>> b.sort(key=float)
>>> b
['949.0', '1099.0']
Я пытаюсь отсортировать список строк, содержащих числа
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']
используйте lambda внутри сортировки, чтобы преобразовать их в float, а затем правильно отсортировать:
a = sorted(a, key=lambda x: float(x))
поэтому вы будете использовать их как строки, но отсортированные по значению, а не лексикографически
Преобразуйте их в int
или float
или даже decimal
(так как он имеет завершающие номера)
>>> b = [float(x) for x in b]
>>> b.sort()
>>> b
[949.0, 1099.0]
Они оба отсортированы. "1" - до "9". Посмотрите здесь: Таблица Ascii