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

Posted

技术标签:

【中文标题】TypeError:\'int\'对象不支持嵌套python列表中的项目分配[关闭]【英文标题】:TypeError: 'int' object does not support item assignment in a nested python list [closed]TypeError:'int'对象不支持嵌套python列表中的项目分配[关闭] 【发布时间】:2018-07-20 09:28:41 【问题描述】:
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)

【问题讨论】:

我们需要更多关于你的输入是什么、你的输出应该是什么、你的代码在做什么的更多信息。基本上是minimal reproducible example nf 是一维列表,仅包含整数。但在那一行中,您试图访问nf[x][3] - 为什么? 如果您想要列表中的最后一项,只需执行mylist[-1] @MooingRawr 我已更新问题以回答您的所有问题。 @JohnGordon 谢谢你告诉我这个 【参考方案1】:

观看此 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)

希望对你有帮助

【讨论】:

谢谢。这是我正在做的错误。但我还是搞错了逻辑。如果您也能帮助我,我将不胜感激。【参考方案2】:
nf[len(nf) -1][3] = sum

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

【讨论】:

以上是关于TypeError:'int'对象不支持嵌套python列表中的项目分配[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:“dict_keys”对象不支持索引

“不支持的图像对象,使用Tesseract

TypeError: *: 'int' 和 'NoneType' 不支持的操作数类型

TypeError: 不支持的操作数类型 -: 'int' 和 'list'

Spark - TypeError:'str'和'int'的实例之间不支持'<='

TypeError: %: 'list' 和 'int' 不支持的操作数类型 |很有趣的案例?