如图 p1p2是书上的内容
def readFile(filename): #读取文件返回列表
file = open(filename,"r")
ls = list(line.strip().split(',') for line in file)
file.close()
return ls
def studentID(lsStudent,lsSchool,lsMajor):#生成学生学号
dicSchool = { x[0]:x[1] for x in lsSchool}
dicMajor = {x[0]: x[1] for x in lsMajor}
detail = []
for student in lsStudent:
id = '012'
id = id + student[5][2:] + dicSchool[student[2]] + dicMajor[student[3]] + student[4][-4:]
id = id + '{0:0>2}'.format([x[0] for x in lsStudent if student[4] == x[4]].index(student[0]) + 1)
detail.append([id] + student)
return detail
def info(stuName,lsStudent): #查找学生信息
info = [info for info in lsStudent if info[1] == stuName][0]
return info
def classmate(stuClass,lsStudent): #查找班级同学
classmate = [info for info in lsStudent if info[5] == stuClass]
return classmate
stuName = input()
stuClass = input()
studentList = 'studentList.csv'
schoolCode = 'schoolCode.csv'
MajorCode = 'MajorCode.csv'
lsStudent = readFile(studentList)
lsSchool = readFile(schoolCode)
lsMajor = readFile(MajorCode)
studentDetail = studentID(lsStudent, lsSchool, lsMajor)
print(*info(stuName,studentDetail))
lsclassmate = classmate(stuClass,studentDetail)
for classmate in lsclassmate:
print(*classmate)
看你这个报错内容好像键的前面有个空格啊,检查一下student[2]的值是否正确
https://blog.csdn.net/Allure_LoveU/article/details/118927734
首先,keyerror是因为dict里面没有这个key,但是你去“取”这个没有的key导致的报错。
我推断是你第23行dicshool 和dicmajor的key出了问题,这个school【2】或者school【3】有可能并不在这两个里面,导致报错。
请把代码用代码块发出来,最好附上三个csv文件的内容,不然看不出来你这个具体出了什么问题