dic_score={"徐丽":[("语文",88),("数学",90),("英语",98),("计算机",95)],"张兴":[("语文",89),("数学",80),("英语",97),("计算机",91)],"刘宁":[("语文",88),("数学",91),("英语",94),("计算机",91)],"阿强":[("语文",78),("数学",94),("英语",91),("计算机",95)]}
for k,v in dic_score.items():
for i in range(4):
avg=sum(v[i][1])/4
dic_score[k]=v+avg
print(dic_score)
avg=sum(v[i][1])/4
TypeError: 'int' object is not iterable
你的逻辑有两处问题
1、 求平均分 的方式不对,如果要遍历来求,要定义一个变量进行累加, 直接sum 是错误的。
2、 字典赋值, 不能用 列表直接加一个 浮点型, 类型无法自动转换, 应该先取字典值,修改(append)后, 再赋值给字典对应的键
dic_score={"徐丽":[("语文",88),("数学",90),("英语",98),("计算机",95)],"张兴":[("语文",89),("数学",80),("英语",97),("计算机",91)],"刘宁":[("语文",88),("数学",91),("英语",94),("计算机",91)],"阿强":[("语文",78),("数学",94),("英语",91),("计算机",95)]}
for k,v in dic_score.items():
print(v)
avg = sum(n[1] for n in v) / 4
temp = dic_score[k]
temp.append(('平均分',avg))
dic_score[k] = temp
print(dic_score)
dic_score={"徐丽":[("语文",88),("数学",90),("英语",98),("计算机",95)],"张兴":[("语文",89),("数学",80),("英语",97),("计算机",91)],"刘宁":[("语文",88),("数学",91),("英语",94),("计算机",91)],"阿强":[("语文",78),("数学",94),("英语",91),("计算机",95)]}
for k,v in dic_score.items():
avg=sum([item[1] for item in v])/len(v)
v.append(("avg", avg))
print(dic_score)