При создании таблицы лидеров в Python 3 таблица лидеров должна быть отсортирована по возрастанию - PullRequest
3 голосов
/ 04 мая 2019

Мне нужно создать таблицу лидеров в Python 3, данные таблицы лидеров находятся во внешнем файле .txt.Кроме того, таблица лидеров должна быть отсортирована по возрастанию.Кроме того, вы можете разобраться в чистом формате таблицы лидеров - без квадратных скобок, волнистых скобок и дополнительных запятых.Я думал о том, чтобы использовать массив или словарь, но я не совсем уверен, как его использовать

#this is a relevant snippet of my code

f = open("scores.txt", "r")
content = f.read()
content.sort()
print(content)
#this is the text file with the names and scores

Muaadh: 5
Yasir: 6
Zaim: 7
Ishfaq: 5
Tanzeel: 87
Hamzah: 3
Muhammed: 5
Muaadh: 6
Yasir: 5

Ответы [ 2 ]

2 голосов
/ 06 мая 2019

Я улучшил код @ kdq0, теперь он будет сортировать смесь двойных, одиночных и отрицательных цифр.Я также сократил код. Этот код был написан при условии, что текстовый файл называется «Results.txt»

import csv

with open('Results.txt', newline='') as f:
  readData = csv.reader(f, delimiter= ':')
  sortScores = sorted(readData, key=lambda i: int(i[1]), reverse=True)
  for row in sortScores:
    print(row[0] +":" +row[1])
1 голос
/ 04 мая 2019

Итак, предположим, что предоставленные вами данные находятся в файле с именем sort-test.txt без заголовка:

import csv

with open('sort-test.txt', newline='') as f:
    data = [{k: v for k, v in row.items()} for row in csv.DictReader(f, delimiter=':', fieldnames=['name', 'score'], quoting=csv.QUOTE_NONE)]

sorted_data = sorted(data, key = lambda i: i['score'], reverse=True)
for x in sorted_data:
    print (x['name'] + ': ' + x['score'])
...