у меня есть словарь, например:Найти среднее значение ключа с несколькими значениями
Jhon: 3, 4, 5
Mark: 5, 5, 5
Matthew: 7, 8 , 9
Это мой код:
from statistics import mean
class1 = {}
for line in f:
columns = line.split(":")
if len(columns) == 2:
names = columns[0]
scores = columns[1].strip()
else:
pass
if class1.get(names):
class1[names].append(scores)
else:
class1[names] = list(scores)
Я уже пробовал:
for k, v in class1.items()
print("{} : {scores}".format(names , mean(scores)
Я получаю ошибка:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
И я также пытался:
for k, v in class1.items():
average = float(sum(v))/len(v)
for k, v in class1.items():
print("{} : {}".format(names=k, average=v)
Ошибка:
Traceback (most recent call last):
File "C:/Users/Onyeka/PycharmProjects/untitled/task3.py", line 59, in <module>
print("{} : {scores}".format(names , mean(scores)))
File "C:\Python34\lib\statistics.py", line 331, in mean
T, total, count = _sum(data)
File "C:\Python34\lib\statistics.py", line 161, in _sum
for n,d in map(_exact_ratio, values):
File "C:\Python34\lib\statistics.py", line 247, in _exact_ratio
raise TypeError(msg.format(type(x).__name__))
TypeError: can't convert type 'str' to numerator/denominator
Я хочу выход быть как этот
Jhon: 4
Mark: 3
Matthew: 8
бы также можно напечатать эти средние значения от наивысшего до самого низкого?
'средние (баллы)' 'должно быть среднее (v)', и вы пропустили некоторые скобки. И '.format (names = k, average = v)' должен jusst быть '.format (v, average)'. – Barmar