Python2发布了将嵌套列表项附加到新列表“int object is unsubscriptable”的问题

2024-10-02 22:34:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含列表子集的列表,每个子集列表是5个元素,第5个元素是int/datetime对象。当我这样循环时:

for items in baseList:
    newList.append(items[4])

基本列表之一的示例:

baseList = [[string1, string2, string3, string4, datetimeobj],[string1, string2, string3, string4, datetimeobj],intofListcount]

如果我试着打印

items[4]

它打印它们,然后在打印完所有的“int type is unsubscriptable”之后以相同的回溯出错。我不知道为什么它会认为我在尝试分割int,好像它是一个字符串或列表类型?你知道吗


Tags: 对象in元素列表fordatetimeitems子集
2条回答

你在baseList中循环,直到你到达intofListcount,根据错误,这是一个整数,但是你试图通过订阅它来把它当作一个列表。你知道吗

试试这个:

for items in baseList:
    if isinstance(items, list) and len(items) > 4:
        newList.append(items[4])

这将检查items是否是一个列表,并且它至少有5个元素,从而跳过最后的intofListcount,或任何其他非列表或索引[4]处没有项的列表。你知道吗

你的问题在于baseList不是同质的,因为不是列表中的每一项都有相同的结构。你知道吗

具体来说,在您给出的示例中:

baseList = [[string1, string2, string3, string4, datetimeobj],
            [string1, string2, string3, string4, datetimeobj],
            intofListcount
           ]

baseList[2]处的条目不是另一个列表,也不是您可以下标的任何内容(即不是一个iterable,如listtuple)。你知道吗

您需要使用一些检查来保护订阅,例如if isinstance(items, list)

你可以简单地用理解代替你的循环

newList = [ items[4] for items in baseList if isinstance(items,list) and len(items) >= 5]

相关问题 更多 >