首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在列表上迭代时的KeyError

在列表上迭代时的KeyError
EN

Stack Overflow用户
提问于 2013-02-27 05:05:29
回答 1查看 918关注 0票数 1

如果这是一个愚蠢的问题,我很抱歉,但我已经想了很久,并查看了Jinja文档,但到目前为止都没有用。简要背景:我刚刚完成了Udacity的CS101和CS253,即将帮助一个朋友为一家瑜伽馆建立一个预订系统。这一切都在Google Appengine上,就像

我想要一个类似如下的可用的瑜伽课程列表:

代码语言:javascript
复制
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..']]

代码语言:javascript
复制
day_output2 = ['Wednesday',['Hatha yoga with Bob 5pm'],['Hot yoga with Al...']]

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

代码语言:javascript
复制
weekly_classes = [day_output1, day_output2]

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

代码语言:javascript
复制
  File "/Users/username/YogaSchemat/yogaschema/main.py", line 113, in get
    day = d[n]
KeyError: 1

使用这个代码..。提前感谢,伙计们!

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-27 05:06:34

您在d映射中使用了字符串键,但是查找的是整数。

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

代码语言:javascript
复制
d = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

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

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

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

代码语言:javascript
复制
d = {
    1: 'Monday', 
    2: 'Tuesday', 
    3: 'Wednesday', 
    4: 'Thursday', 
    5: 'Friday', 
    6: 'Saturday', 
    7: 'Sunday'
}

但是因为你的密钥是连续的,所以你也可以节省空间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15099244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档