Я сделал немного кода, который добавляет результаты тестов из текстового файла в словарь питона в формате этого:Как узнать средние значения в словаре, которые назначены ключу?
{'Ruan': '22', 'hello': [22, 1], 'kurun': '29'}
И я хочу работать в среднем всяких баллов и это это то, что я пытался до сих пор:
while choice == 'av':
if schClass == '1':
schClass = open("scores1.txt", 'r')
li = open("scores1.txt", 'r')
data = li.read().splitlines()
for li in data:
name = li.split(":")[0]
score = li.split(":")[1]
if name not in diction1:
diction1[name] = score
if name in diction1:
diction1[name] = [int(diction1[name]),int(score)]
print(diction1)
averages_dct = {}
for name in diction1:
student_average = sum((diction1[name]))/len((diction1[name]))
averages_dct.update({name: student_average})
reversed_dct = {averages_dct[k]: [] for k in averages_dct}
for average in reversed_dct:
for name in averages_dct:
if average == averages_dct[name]:
reversed_dct[average].append(name)
for av in sorted(reversed_dct, reverse=True):
print('average: %s, students: %s' % (av, reversed_dct[av]))
Это ошибка:
student_average = sum((diction1[name]))/len((diction1[name]))
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Я гайка понять, что это означает, что в полной мере и не знаю, как исправить Это?
вы не можете назвать сумму на Int –
также подозреваю 'имя, оценка = li.split («:») 'будет работать и заменять dict с defaultdict –
okay cheers @PadraicCunningham И что я делаю вместо суммы? –