无法从Udacity CS101中找出python代码中的keyerror

2024-10-02 14:25:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在学习关于Udacity的cs101课程,我遇到了一个错误

Keyerror 'a'

我不知道那是从哪里来的。我知道如果你搜索一个不存在的密钥,你可能会得到密钥错误。在

这个代码应该是搜索一个班级字典,并打印出一个人所参与的学期和课程,不管他们是教师还是助理。而且,也不总是有助手。在

因为如果有人在sprg15中教cs101,它会是这样的 {"sprg1d":["cs101"]}

^{pr2}$

Tags: 代码字典错误助手密钥教师课程学期
1条回答
网友
1楼 · 发布于 2024-10-02 14:25:30

您的for term in courses循环生成;这里是字符串。因此,term首先被分配给['apr2012', 'jan2044', 'feb2012']中的一个键。在

下一个循环循环遍历term中的字符,然后:

for term in courses:
    for c in term:

如果term设置为apr2012,则c首先设置为a。但是没有courses['apr2012']['a']条目。在

您可能希望循环相关的值:

^{pr2}$

您可以使用嵌套在字典理解中的列表理解构建结果:

def involved(courses, person):
    return {t: [cn for cn, v in c.iteritems() if person in v.itervalues()]
            for t, c in courses.iteritems()}

尽管这会返回空列表。如果这是个问题,请将代码简化为:

def involved(courses, person):
    inv = {}
    for term, course in courses.iteritems():
        for course_name, info in course.iteritems():
            if person in info.itervalues():
                inv.setdefault(term, []).append(course_name)
    return inv

{cd3>删除所有前缀。在

相关问题 更多 >