Я пытаюсь заказать все оценки в порядке оценки каждого пользователя от наивысшего до самого низкого. Я попытался это с код ниже:Python DefaultDict Ordering Multiple Values Issue
import collections
from collections import defaultdict
from operator import itemgetter
worker_scores = collections.defaultdict(lambda: collections.deque(maxlen=3))
import operator
worker_scores.clear()
with open('score_names.txt') as f:
for line in f:
worker,score = line.split(":")
worker_scores[worker].append(int(score))
print("\nThis prints all the highest scores.\n")
for worker in sorted(worker_scores, key=itemgetter(1,2,3), reverse=True):
print(worker," ".join(map(str,worker_scores[worker])))
# This should print the maximum value for each key
print max(worker_scores, key=worker_scores.get)
Мой текстовый файл также выглядит следующим образом:
AdamJohnson:10
AdamJohnson:20
AdamJohnson:30
AdamJohnson:40
AdamJohnson:60
AdamJohnson:50
MichaelJordan:70
MichaelJordan:80
MichaelJordan:100
MichaelJordan:90
DavidSnowman:15
DavidSnowman:20
DavidSnowman:30
DavidSnowman:25
Исход IDLE выглядит следующим образом:
This prints all the highest scores.
MichaelJordan 80 100 90
AdamJohnson 40 60 50
DavidSnowman 20 30 25
Это то, что Я хотел, где самые высокие оценки находятся на вершине, а самые низкие оценки - внизу. Я обнаружил метод itemgetter
, чтобы сделать это, поэтому теперь я выполнил часть своего решения.
Для второй части я хочу, чтобы максимальная клавиша для каждого значения была напечатана. Я могу использовать отсортированный ключ для печати ключей в алфавитном порядке, но я не могу напечатать максимальное значение для каждой клавиши. Я использовал эту линию сверху:
print max(worker_scores, key=worker_scores.get)
Чтобы получить этот результат:
AdamJohnson:60
MichaelJordan:100
DavidSnowman:30
Но эта ошибка приходит: Invalid Syntax (Max)
. Что происходит не так?
@jonrsharpe Посмотрите, сэр, я просто делаю этот код для моей собственной выгоды. Что подсказывает, что я делаю это для любой квалификации ??? Я извиняюсь, но чувствую себя оскорбленным. Я только смотрел на проекты других людей на SO, чтобы помочь разработать мою собственную программу с моим собственным пониманием. Пожалуйста, не предлагайте, чтобы я плагиатировал мою собственную работу, так как это подрывает мои собственные намерения. –
@jonrsharpe Я не зарегистрирован в квалификации GCSE, поскольку я уже в колледже.Затем я удалю этот вопрос и спрошу новый. Извиняюсь за мою вспышку, так как вы тоже извинились, и я буду принимать ваши комментарии на борту. Благодарю. –
@ DelbertJ.Nava Все, что вам нужно здесь, это отсортированная функция для сортировки ваших позиций словаря, а затем добавить в «OrderedDict», и о задании таких вопросов я видел, что многие люди, у которых есть репо более 100 тысяч, ответили на такие вопросы, а также ....! я не думаю, что у этих вопросов много проблем !! – Kasramvd