代码之家  ›  专栏  ›  技术社区  ›  Shubham Agarwal

TypeError:“int”对象不支持嵌套python列表中的项分配[已关闭]

  •  0
  • Shubham Agarwal  · 技术社区  · 7 年前
    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 回复  |  直到 7 年前
        1
  •  0
  •   jtagle    7 年前

    请观看此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 (the sum 之前计算的变量),猜测最后一行应该是

        nf.append(temp)
    

    希望有帮助

        2
  •  0
  •   John Gordon    7 年前
    nf[len(nf) -1][3] = sum
    

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