2013-04-12 84 views
0

这是一个代码,我写给一些子信道有有属性和属性的值,每一个不同的表它给了我这个错误高级搜索的结果:列表索引超出范围在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

这是对代码的正确缩进? – halex

+2

,如果你表示这是第35行。这将有助于但这里有一个线索:你做的任何时间'范围(LEN(事))'在Python你这样做是错误的。 –

+0

@丹尼尔罗斯曼 - 为什么这样? – atomh33ls

回答

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 
+0

的一点是,因为你看到result_search_obj是一个列表的列表,所以我不能删除第二个循环,因为我会只访问每个列表 –

+0

的第一个元素那么也许你需要引用的地方里面的'l'变量那个循环? ;) – Aya

+0

对不起,我没有听清楚什么ü通过引用该循环 –

相关问题