python - python和Flask框架中的索引超出范围
问题描述
出于某种原因,python 解释器认为索引超出范围,但事实并非如此!
list_of_venues = Venue.query.with_entities(Venue.id, Venue.city, Venue.state, Venue.name).all()
data = []
#{'city': list_of_venues[0].city, 'state': list_of_venues[0].state, 'venues':[]}
counter = 0
# print(len(list_of_venues))
# print(data[counter]["city"])
for venue in list_of_venues:
print(counter)
# print(data[counter]["city"])
if counter == 0:
city_dict={}
city_dict["city"] = venue.city
city_dict["state"] = venue.state
city_dict["venues"] = []
data.append(city_dict)
city_dict = {}
if counter > 0:
if venue.city != data[counter]["city"]:
city_dict={}
city_dict["city"] = venue.city
city_dict["state"] = venue.state
city_dict["venues"] = []
data.append(city_dict)
city_dict = {}
counter += 1
print(counter)
# if counter != (len(list_of_venues) - 1):
# counter = counter + 1
print(data)
data = list_of_venues
return render_template('pages/venues.html', areas=data)
这是错误的行: if venue.city != data[counter]["city"]:
这是错误:IndexError:列表索引超出范围
感谢您花时间指导我!
解决方案
在您的代码中,您的data
变量是长度为 0 的空列表,因此当循环进入第二次迭代并且counter
现在为 1 时,它会引发错误。
移动您的数据分配
data = list_of_venues
直到循环之前,它应该可以工作。
所以如果你有
list_of_venues = Venue.query.with_entities(Venue.id, Venue.city, Venue.state, Venue.name).all()
data = []
#{'city': list_of_venues[0].city, 'state': list_of_venues[0].state, 'venues':[]}
counter = 0
# print(len(list_of_venues))
# print(data[counter]["city"])
data = list_of_venues
for venue in list_of_venues:
print(counter)
# print(data[counter]["city"])
if counter == 0:
city_dict={}
city_dict["city"] = venue.city
city_dict["state"] = venue.state
city_dict["venues"] = []
data.append(city_dict)
city_dict = {}
if counter > 0:
if venue.city != data[counter]["city"]:
city_dict={}
city_dict["city"] = venue.city
city_dict["state"] = venue.state
city_dict["venues"] = []
data.append(city_dict)
city_dict = {}
counter += 1
print(counter)
# if counter != (len(list_of_venues) - 1):
# counter = counter + 1
print(data)
return render_template('pages/venues.html', areas=data)
它应该工作。
推荐阅读
- matrix - VBA - 需要将单行向量转换为矩阵
- database - 如果列包含某个字符串,则使数据库仅接受记录
- c# - 将特定的应用程序包重定向到不同的网络适配器
- minecraft - Minecraft mods 无法读取主配置文件,但在使用我自己的启动器时可以读取所有其他配置文件
- node.js - Visual Studio 代码:socke.io 无法设置 pingTimeout 和 pingInterval 不断出错
- python - openpyxl时间格式不一致
- .net - 多目标项目引用的目标框架解析行为
- youtube - 尽管使用了适度品牌=1,但仍显示在 YouTube 上观看链接
- c# - c# Selenium: Unable to SwitchTo Modal/Pop-up/iFrame
- encryption - Android Keystore 和“设置”应用程序的“清除数据”操作是否相关?