python - 将字典值附加到python中的列表
问题描述
我无法将与键“id”一致的学生字典值附加到列表中。任何帮助深表感谢!
students = list();
students.append( {'id':12345, 'first_name':'Alice',
'last_name':'Anderson','assignments':[('assignment_1',0),('assignment_2',2),
('assignment_3',3)]})
students.append({'id':22345, 'first_name':'John',
'last_name':'Sparks','assignments':[('assignment_1',2),('assignment_2',3),
('assignment_3',4)]})
students.append({'id':32345, 'first_name':'Taylor',
'last_name':'Mason','assignments':[('assignment_1',3),('assignment_2',2),
('assignment_3',3)]})
def return_passing(students):
grade_sum = 0
counter = 0
for s in students: #loop thru students
for assignment, grade in s['assignments']:
grade_sum += grade
counter += 1
average = grade_sum / counter
lst = list()
if average >= 2.0:
lst.append((s['id']))
return lst
return_passing(students)
print(return_passing(students))
解决方案
您在错误的位置初始化事物有几个问题,因此它们会被重置。评论中对此进行了解释:
def return_passing(students):
lst = [] # initialize lst here
for s in students: #loop thru students
grade_sum = 0 # reset these for each student
counter = 0
for assignment, grade in s['assignments']:
grade_sum += grade
counter += 1
# now that we have gone throug all assignments
# compute average
average = float(grade_sum) / counter # convert to float for precision
if average >= 2.0:
lst.append(s['id'])
return lst # return only after you've gone through all students
推荐阅读
- android - error.org.jsonException.“opening_hours”没有值
- mysql - 本月总和与之前的差异 [mysql]
- java - 如果该 URL 包含路径变量,是否有任何方法可以在 ServletRequest 中找出确切请求的 URL?
- php - 使用最后插入的 id 插入问题
- python - WebDriverWait 未能等待该 URL
- powershell - 设置 IIS 默认应用程序池队列长度 Powershell
- java - maven 以什么顺序运行复合命令给出的阶段?
- stata - 使用 outreg2 导出结果
- javascript - 网络工作者是否有某种加载事件?
- ios - 由于循环条件,无法发出预编译的标头