0

これは、属性を持ついくつかのサブチャネルの高度な検索の結果と、それぞれ別のテーブルにある属性の値を取得するために作成したコードです。このエラーが表示されます: list index out of range at line 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})
4

1 に答える 1

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
于 2013-04-12T09:36:25.987 に答える