迭代列表时出现KeyError

2024-09-21 07:39:54 发布

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

如果这是一个愚蠢的问题,我很抱歉,但我已经考虑了很多,并查阅了金贾的文件,但迄今没有结果。简短背景:我刚刚完成了Udacity的CS101和CS253,我正准备帮助一个朋友建立一个瑜伽工作室的预订系统。都在谷歌Appengine上,就像

我想要一份类似的瑜伽课程列表:

Monday

Dynamic Yoga with Mary 6pm

Soft yoga with Susie 8pm

Wednesday

Hatha yoga with Bob 5pm

Hot yoga with Alice 7pm

所以我想把课程表拿来,然后看看星期一有没有瑜伽课。如果有一个,我会把“星期一”和所有星期一的课程加在列表上,然后再加上其他所有的日子。像这样:

day_output1 = ['Monday',['Dynamic Yoga with Mary 6pm'],['Soft yoga with Su..']]

^{pr2}$

然后将这些内容添加到整个星期的列表中,然后发送到模板:

weekly_classes = [day_output1, day_output2]

现在我得到了一个KeyError,这意味着它找不到密钥,但是我不明白为什么?

  File "/Users/username/YogaSchemat/yogaschema/main.py", line 113, in get
    day = d[n]
KeyError: 1

有了这个密码。。。提前谢谢各位!

d = {
"1": 'Monday', 
"2": 'Tuesday', 
"3": 'Wednesday', 
"4": 'Thursday', 
"5": 'Friday', 
"6": 'Saturday', 
"7": 'Sunday'
}
def get_classes():
    yoga_classes = Schema.all() #appengine DB request
    if yoga_classes:
        weekly_classes = [] #list that will be sent to template
        for n in range(1,8):
            for e in yoga_classes:
                if e.weekday == n:
                    day = d[n] #getting weekday from d
                    class_details = [] #
                    class_details.append(e)
                    day_output = [day,class_details]
                    weekly_classes.append(day_output)
    self.response.out.write(weekly_classes)

Tags: in列表withdynamicdetailsclass课程classes
1条回答
网友
1楼 · 发布于 2024-09-21 07:39:54

您在d映射中使用字符串键,但正在查找一个整数。在

在这种情况下,您应该改用列表:

d = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

# ...
for n in range(7):
    day = d[n]

如果n介于0和6之间,则直接映射到d列表中这些位置的周名称。在

或者,可以使用整数作为键:

^{pr2}$

但是既然你的钥匙是顺序的,你也可以节省空间。在

相关问题 更多 >

    热门问题