Во-первых, мы можем прочитать строки файла.Далее мы используем понимание списка, чтобы разделить каждую строку в разделителе «|», взять последний индекс и преобразовать в целое число для сортировки.Мы сортируем в обратном порядке и устанавливаем ключ так, чтобы на выходе были индексы строк, а затем устанавливаем lines_sorted
равным порядку отсортированных строк.
with open("file.txt", "r") as f:
lines = f.readlines()
scores = [int(l.split("|")[-1]) for l in lines]
sorted_idx = sorted(range(len(scores)), key=lambda k: scores[k], reverse=True)
lines_sorted = [lines[i] for i in sorted_idx]
См. этот вопрос длядополнительные предложения по сортировке и возврату индекса.
Пример С файлом "file.txt", содержащим следующее:
Name | Email@example.com | 1000
Name2 | Email2@madeupsite.com | 10
Name3 | Email3@madeupsite.com | 100
lines_sorted
будет содержать:
["Name | Email@example.com | 1000",
"Name3 | Email3@madeupsite.com | 100",
"Name2 | Email2@madeupsite.com | 10"]