Как реализовать выбор Сортировка в списке?

Итак, у меня есть .txt файл:

 131,263.07 47,170.14 170,190.01 180,412.69 53,401.53 

И мне пришлось прочитать файл, чтобы вывести список:

 131 kms, $263.07 47 kms, $170.14 170 kms, $190.01 180 kms, $412.69 53 kms, $401.53 

Код, который я использовал, был:

 def PrintList(table): for line in table: print(str(line[0]) + " kms, $" + str(line[1])) file = open(input("Enter file name: ")) table = [] for line in file: line = line.rstrip().split(",") line[0] = int(line[0]) line[1] = float(line[1]) table.append(line) PrintList(table) file.close() 

И теперь я хотел бы отсортировать список в порядке возрастания цены, чтобы получить:

 47 kms, $170.14 170 kms, $190.01 131 kms, $263.07 53 kms, $401.53 180 kms, $412.69 

Как реализовать это в Python? Я пробовал делать это с помощью Selection Sort но он просто не работает.

Обновление: Спасибо за вклад до сих пор. Тем не менее, я пробовал функцию сортировки, но я хотел бы выяснить, как реализовать это, используя Selection Sort .

Обновление: я не могу опубликовать код Selection Sort который я использовал, поскольку я его перезаписал, тем не менее приведенный ниже пример кода (который я использовал для сортировки случайного списка расстояний), который мне пришлось изменить для сортировки вышеупомянутый список в порядке возрастания цены. Надеюсь, этого достаточно.

 def selectionSort(distance): n = len(distance) for i in range(n): minPlace = searchMin(distance) swap(distance, i, minPlace+i) def searchMin(distance): minPlace = 0 n = len(distance) for i in range(1, n): if distance[i] < distance[minPlace]: minPlace = i return minPlace def swap(distance, i, j): temp = distance[i] distance[i] = distance[j] distance[j] = temp 

Если есть более простой способ реализовать это, пожалуйста, дайте мне знать. Заранее спасибо. Приветствия.

3 Solutions collect form web for “Как реализовать выбор Сортировка в списке?”

В списках Python уже есть метод sort . Вы можете просто вызвать его, указав key аргумент, чтобы определить, как сортировать.

 def print_list(table): for line in table: print(str(line[0]) + " kms, $" + str(line[1])) with open(input("Enter file name: ")) as f: table = [] for line in f: line = line.rstrip().split(",") line[0] = int(line[0]) line[1] = float(line[1]) table.append(line) table.sort(key=lambda line: line[1]) print_list(table) 

Обратите внимание, что я сделал несколько дополнительных изменений в вашей программе, а именно переименовал PrintList в соответствии с PEP8 и использовал оператор with чтобы файл автоматически закрывался.

Если вы настаиваете на выборе Selection Sort (это будет хуже, чем сортировка по умолчанию Python), реализуйте его в вспомогательной функции, которая выполняет интерфейс sorted .

Это абсолютно необходимо для реализации сортировки сортировки? Я бы sorted :

 PrintList(sorted(table, key = lambda x: x[1])) 

где

 key = lambda x: x[1] 

инструктирует sorted значение элемента с индексом 1 (цена) для сравнения ваших объектов.

после вашего цикла:

 sorted_table = sorted(table, key=lambda row: row[1], reverse=True) 

Sorted_table теперь содержит ваши табличные данные, отсортированные по второму столбцу. Затем вы можете передать sorted_table в свою функцию PrintList. Альтернатива, которая позволяет избежать лямбда:

 from operator import itemgetter sorted_table = sorted(table, key=itemgetter(1), reverse=True) 

Подробнее о сортировке python см. На странице https://wiki.python.org/moin/HowTo/Sorting.

Python - лучший язык программирования в мире.