繁体   English   中英

Python:不知道为什么会出现“ IndexError:列表分配索引超出范围”错误

[英]Python: not sure why I am getting “IndexError: list assignment index out of range” error

我认为发布经过稍微修改的代码版本(出于隐私原因而修改)会更容易。 本质上,我是根据csv文件中提供的信息创建目录结构的。 该代码首先将csv转换为2d列表。 然后,脚本在csv中搜索以找到相关信息,并且应逐行创建目录路径。 将检查目录路径以查看它是否已经存在,如果不存在,则应创建它。 唯一的问题是,我用于pi和poc的循环给我一个错误“ IndexError:列表分配索引超出范围”,我不确定为什么。

    #We need to find what column in the 2D list these fields are listed in the header
    x,y = index_containing_substring(data,"PiID")
    pi = []
    if x != None and y != None:
        for i in range(len(data)):
            pi[i] = data[i][y]
        #removes header row 
        pi.pop(0)
    else:
        pi = None
        print(' ')
        print("No value for PI")


    x,y = index_containing_substring(data,"RequesterID")
    poc = []
    if x != None and y != None:
        for i in range(len(data)):
            poc[i] = data[i][y]
        #removes header row 
        poc.pop(0)
    else:
        poc = None
        print(' ')
        print("No value for point of contact")

例如,在这里:

pi = []
if x != None and y != None:
    for i in range(len(data)):
        pi[i] = data[i][y]

您不能将pi分配给不存在的元素。

解决此问题的一种方法是使用list.append()代替:

pi = []
if x != None and y != None:
    for i in range(len(data)):
        pi.append(data[i][y])

相同的模式出现在代码中的其他位置。

看起来这行引起了问题

pi[i] = data[i][y]

代替那个用途

pi.append(data[i][y])

有关更多信息,请参见以下链接

https://docs.python.org/2/tutorial/datastructures.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM