gpt4 book ai didi

python - unboundLocalError - 变量是字典中的关键

转载 作者:行者123 更新时间:2023-12-01 04:55:45 24 4
gpt4 key购买 nike

def create_school(school,year):
all_students = {}
achievements= {}
var = data.Files.get(school,year)
for child in var.student_info_parsed:
for gchild in var.student_info_parsed[child]:
for ggchild in var.student_info_parsed[child][gchild]:
all_students[ggchild[0]] = ggchild
for child in var.student_info:
for gchild in var.student_info[child]:
if gchild == 'localidentifier':
student = var.student_info[child][gchild]
achievements[student] = {}
achievements[student]['certificates'] = []
achievements[student]['otherachievements'] = []
if gchild == 'certificates':
for ggchild in var.student_info[child][gchild]:
cert = var.student_info[child][gchild][ggchild]
cert_year = cert[2][0:4]
if cert_year == year:
achievements[student]['certificates'].append(cert)
if gchild == 'otherachievements':
ocert = var.student_info[child][gchild]
n = 0
while n < len(ocert):
ocert_year = ocert[n][1]
if ocert_year == year:
achievements[student]['otherachievements'].append(ocert[n])
n = n+1
if gchild == 'endorsements':
ecert = var.student_info[child][gchild]
l = list()
for subj in ecert:
if ecert[subj]['courseendorsementresult'] != 'NO':
result = ecert[subj]['courseendorsementresult']
l.append([subj,result])
achievements[student]['endorsements'] = l
return achievements

所以在我添加条件之前

if gchild == 'endorsements':
ecert = var.student_info[child][gchild]
l = list()
for subj in ecert:
if ecert[subj]['courseendorsementresult'] != 'NO':
result = ecert[subj]['courseendorsementresult']
l.append([subj,result])
achievements[student]['endorsements'] = l

一切都会找到,但现在我遇到了错误

  File "/Users/Teacher/Documents/Python/Standards/Data_Manipulation_3/data_man.py", line 454, in create_school
achievements[student]['endorsements'] = l
UnboundLocalError: local variable 'student' referenced before assignment

对我来说奇怪的是到目前为止我一直在引用“学生”。

我没有名为student的全局变量?

我真的很困惑,我认为这些错误是在全局变量和局部变量之间存在混淆但“学生”变量只是局部变量时发生的?

任何帮助将不胜感激。

最佳答案

您的变量 student 是在 if gchild == 'localidentifier' 前面的 block 中创建的。如果执行该 block ,变量 student 将可用。但是,如果 if gchild == 'endorsements' 前面的 block 在另一个 block 之前执行(因为 gchild=='endorsements'早于 gchild=='localidentifier' 的迭代),那么变量 student 将不会被创建。

关于python - unboundLocalError - 变量是字典中的关键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27419181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com