TypeError:'int'对象不支持嵌套python列表中的项目赋值

时间:2018-02-09 15:09:02

标签: python python-2.7 typeerror

import pprint
train_data = [[1,1,1], [1,2,2], [2,1,3], [2,2,2],[3,1,1], [3,2,2], [4,1,3], [4,2,2]]
train_label = [[1], [1], [2], [2]]

这是数据,基本上我正试图解决文本分类问题。 train_data格式为[[docID, wordID, count]train_label确定哪个文档ID属于哪个类。因此,在给定的情况下,位置1的文档属于类1,位置3的文档属于类2。

totaldata = []

在总数据中,第1列是文档ID,第2列是wordID,第3列是它的计数。

 for index in range(len(train_data)):
        temp =[]
        if index == 0:
            temp.append(train_label[train_data[index][0]-1][0])
            temp.append(train_data[index][0])
            temp.append(train_data[index][1])
            temp.append(train_data[index][2])
            totaldata.append(temp)
        elif(totaldata[len(totaldata)-1][0] == train_label[train_data[index][0] -1][0]):
            temp.append(train_label[train_data[index][0] -1 ][0])
            temp.append(train_data[index][0])
            temp.append(train_data[index][1])
            temp.append(train_data[index][2])
            totaldata.append(temp)
        elif(totaldata[len(totaldata)-1][0] != train_label[train_data[index][0] -1][0]):
            temp.append(train_label[train_data[index][0] -1 ][0])
            temp.append(train_data[index][0])
            temp.append(train_data[index][1])
            temp.append(train_data[index][2])
            totaldata.append(temp)

TotalData是一个嵌套列表,它结合了前两个列表中的数据,并以[[classID, docID, wordID, Count]]

的形式提供输出
    nf = []

nf中,我想在特定的类中存储特定wordID的总数。

这意味着我的预期输出应为[[1,1,4],[1,2,4],[2,1,4],[2,2,4]]

nf = []
for index in range(len(totaldata)):
    for i in range(len(totaldata)):
        temp = []
        temp.append(totaldata[index][0])
        if i == 0:
            sum = totaldata[index][3]
            temp.append(totaldata[index][2])
            temp.append(sum)
            nf.append(temp)
        elif(((nf[-1][0]) ==totaldata[i][0])and nf[-1][1] == totaldata[i][2]):
            sum+= totaldata[i][3]
            nf[-1][2] = sum
        elif(((nf[-1][0]) ==totaldata[i][0])and nf[-1][1] != totaldata[i][2]):
            sum = int(totaldata[i][3])
            temp.append(totaldata[i][2])
            temp.append(sum)
            nf.append(sum) 

pprint.pprint(nf)

2 个答案:

答案 0 :(得分:0)

观看此elif声明。

elif(((totaldata[len(totaldata)-1][0]) ==totaldata[index][0])and totaldata[len(totaldata)-1][0] != totaldata[index][2]):
    sum = int(totaldata[index][3])
    temp.append(totaldata[index][0])
    temp.append(totaldata[index][2])
    temp.append(sum)
    nf.append(sum)

您要将一个整数追加到nf(您之前计算的sum变量),猜猜最后一行应该是

    nf.append(temp)

希望有所帮助

答案 1 :(得分:0)

nf[len(nf) -1][3] = sum

nf是一个整数列表,但您尝试将其视为二维列表。