这是我编写的代码,用于给出一些具有属性的子通道的高级搜索结果,以及每个属性在不同表中的值,它给出了我的错误:列表索引超出第35行的范围
sub_id = request.GET['sub_ch_id']
attributes = Attribute.objects.filter(subchannel_id = sub_id)
values =[]
print "attributes"
# print request
post = []
value_obj =[]
for w in attributes:
name = w.name
print request.GET[name]
values.append(request.GET[name])
result_search_obj = []
flag = False
result_search = []
result = []
post = []
i = 0
f = i+1
# post_temp = ""
# print "HIIIIII", len(result_search_obj)
for j in range(0,len(attributes)):
# print 'EREEEEEEE'
result_search_obj+=(Value.objects.filter(attribute_id = attributes[j].id
, value = values[j]))
# print '1st loop'
for k in range(0,len(result_search_obj)):
# print '2 loop'
for l in range(0,len(result_search_obj)):
result_search[k].append(result_search_obj[k].Post_id)
# print '4 loop'
for a in range(0,len(result_search)):
result_search.sort(len(result_search[k]))
# print '6 loop'
for h in range(0,len(result_search)):
post_temp = ""
# print '3 loop'
for g in result_search[h]:
tmp=result_search[h]
loc = temp[g]
if loc == result_search[h+1][g]:
flag = True
post_temp = tmp[g]
break
post = post_temp
print post
return HttpResponse('filter_post_channel.html', {'posts' : post})
答案 0 :(得分:0)
您似乎认为可以直接索引空列表以在任意位置添加元素。尝试插入行...
result_search = [[] for o in result_search_obj]
......就在排队之前...
for k in range(0,len(result_search_obj)):
..但是,正如其他人所指出的那样,您不需要使用range(len(x))
来索引具有相同索引值的多个列表。如果您有类似的东西......
list1 = [1, 2, 3]
list2 = [4, 5, 6]
for index in range(len(list1)):
list2[index] = list1[index]
......你可以使用......
list1 = [1, 2, 3]
list2 = [4, 5, 6]
for index, value in enumerate(list1):
list2[index] = value