У меня есть некоторые данные, которые являются списком баллов для каждого из разных пользователей. Следующий код находит максимальное значение последних трех баллов для пользователя (сортированных, так что пользователь с минимальным счетом показан первый), и печать, что из:Сортировка списка для каждого пользователя по среднему значению 3-х записей
dlist = {c:max(d[c][-3:]) for c in d} #max for each user from last 3
itmlist = sorted(dlist.items(), key=lambda x: x[1]) #sort items
for z in itmlist:
print('{}: {} '.format(z[0], z[1])) #print user-by-user
Я пытаюсь изменить это используйте sum(l)/len(l)
, чтобы найти среднее значение последних трех баллов для каждого пользователя, а затем отсортируйте его, чтобы напечатать минимальные пользовательские средние по порядку, но попали в тупик.
Может ли кто-нибудь указать мне правильное направление?
-
EDIT:
Это код, который используется для создания списка. Я использую текстовый файл, содержащий данные, содержащие результаты в формате, как:
Боб: 2
Иоанна: 7
Это то читать с помощью этого:
[Просмотр истории сообщение]
Можете ли вы предоставить тест д и его ожидаемый результат? – igon
Когда вы используете 'sum (l)/len (l)', он будет неявно возвращать 'int', который может потерять точность вычисления, любезно предоставите ввод образца, чтобы сделать проблему более ясной? Определить 'd' – ZdaR
' sum (l)/len (l) 'должно быть одинаковым для всех элементов, как вы можете сортировать его? (или, другими словами, я думаю, я не понимаю, что вы здесь делаете) – alfasin