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