я пытаюсь отсортировать список, который я импортировал из файла от высшего к низшему, но это не похоже на сортировку - PullRequest
0 голосов
/ 06 ноября 2018

это мой код, который импортирует файл, добавляет его в список и сортирует список по возрастанию:

for x in range (1):
            scoresList = [ ] #this is a variable for the list
            file = open("Leaderboard file.txt", "r") #this opens the file as a read file
            file_line = file.readlines() #this then reads the lines
            scoresList.append(file_line) #this then appends the lines to the list
            file.close()
            leaderboard_list = sorted(scoresList, reverse=True) #this is supposed to order the numbers yet it doesnt seem to do anything
            print(leaderboard_list)
            start_menu()

это то, что он печатает:

[['\n', "35['jerry'] 20['bill']15['Dan']20['billy']"]]

и это файл, из которого он получает информацию:

35['jerry'] 20['bill']15['Dan']20['billy']

1 Ответ

0 голосов
/ 07 ноября 2018

Ну, это было немного длиннее, чем я ожидал.

with open("file.txt") as f:
    for line in f.readlines():
        new_text = line.strip().replace("[", "").replace("]", "").replace(" ", "").split("'")[:-1]
        new_text = [int(s) if s.isdigit() else s.title() for s in new_text]
        new_text = [(new_text[i],new_text[i+1]) for i in range(0,len(new_text),2)]
        new_text.sort(key=lambda tup: tup[0], reverse=True)

print(new_text)

Выход:

[(35, 'Jerry'), (20, 'Bill'), (20, 'Billy'), (15, 'Dan')]

Возвращает список (на строку) отсортированных заглавных букв. Если ваше форматирование текста имеет решающее значение, вам придется проделать дополнительную работу здесь. ЛМК, если это критично.

Справка от:

Собрать каждую пару элементов из списка в кортежи в Python

Как отсортировать (список / кортеж) списки / кортежи?

Python - Как преобразовать в число с плавающей точкой только числа из смешанного списка?

...