Python 在列表上迭代时出现KeyError
我很抱歉,如果这是一个愚蠢的问题,但我已经考虑了很多,并通过Jinja文件,但到目前为止没有任何效果。简短背景:我刚刚完成了Udacity的CS101和CS253,我将帮助一位朋友建立一个瑜伽工作室的预订系统。这一切都在谷歌Appengine上,就像 我想有一个类似的瑜伽课程列表:Python 在列表上迭代时出现KeyError,python,google-app-engine,Python,Google App Engine,我很抱歉,如果这是一个愚蠢的问题,但我已经考虑了很多,并通过Jinja文件,但到目前为止没有任何效果。简短背景:我刚刚完成了Udacity的CS101和CS253,我将帮助一位朋友建立一个瑜伽工作室的预订系统。这一切都在谷歌Appengine上,就像 我想有一个类似的瑜伽课程列表: Monday Dynamic Yoga with Mary 6pm Soft yoga with Susie 8pm Wednesday Hatha yoga with Bob 5pm Hot yoga w
Monday
Dynamic Yoga with Mary 6pm
Soft yoga with Susie 8pm
Wednesday
Hatha yoga with Bob 5pm
Hot yoga with Alice 7pm
所以我想去拿课程表,然后看看星期一有没有瑜伽课。如果有,我会在列表中加上“星期一”和所有的星期一课程,以此类推。像这样:
day\u output1=[“周一”,“下午6点与玛丽一起做动态瑜伽”,“与苏一起做柔软瑜伽]
day_output2 = ['Wednesday',['Hatha yoga with Bob 5pm'],['Hot yoga with Al...']]
然后将这些内容添加到整个星期的列表中,然后发送到模板:
weekly_classes = [day_output1, day_output2]
现在我得到一个密钥错误,这意味着它找不到密钥,但我不明白为什么
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)
您在
d
映射中使用字符串键,但查找的是整数
在这种情况下,您应该使用列表:
d = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
# ...
for n in range(7):
day = d[n]
当n
介于0和6之间时,直接映射到d
列表中这些位置的周名称
或者,您可以使用整数作为键:
d = {
1: 'Monday',
2: 'Tuesday',
3: 'Wednesday',
4: 'Thursday',
5: 'Friday',
6: 'Saturday',
7: 'Sunday'
}
但是,由于您的键是连续的,您也可以节省空间。您在
d
映射中使用字符串键,但查找的是整数
在这种情况下,您应该使用列表:
d = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
# ...
for n in range(7):
day = d[n]
当n
介于0和6之间时,直接映射到d
列表中这些位置的周名称
或者,您可以使用整数作为键:
d = {
1: 'Monday',
2: 'Tuesday',
3: 'Wednesday',
4: 'Thursday',
5: 'Friday',
6: 'Saturday',
7: 'Sunday'
}
但是,由于您的钥匙是按顺序排列的,您还可以节省空间。谢谢,这就解决了问题!你也在挪威吗?:)我是瑞典人Oslo@SatoBolin:哈得!是的,我是维斯特沃德地区的达奇人。谢谢你,这就解决了问题!你也在挪威吗?:)我是瑞典人Oslo@SatoBolin:哈得!是的,我是维斯特沃德地区的达奇人。