Python 3.4 - 运行脚本时出现列表索引超出范围错误,但在解释器中没有

时间:2017-07-20 10:45:36

标签: python list pycharm

考虑以下列表,我使用值innerlist调用['66957039892995', '-70', '-70', '-70', '1', '1', '0', '']

datadict = { 'a': innerlist[0], 'b': innerlist[1], 'c': innerlist[2], 'd': innerlist[3], 'e': innerlist[4], 'f': innerlist[5], 'g': innerlist[6], 'h': "not available" if not innerlist[7] else innerlist[7] }

我正在尝试使用上面的列表创建字典。当我在Python解释器中手动执行它时,它工作正常。

File "**hidden filepath**", line 25, in make_wd
    'h': "not available" if not innerlist[7] else innerlist[7]
IndexError: list index out of range

在解释器中,它使字典没有任何错误。当我找到列表的长度时,它输出8.

但是,当我尝试在脚本中运行此代码时,Pycharm会抛出以下错误:

import pymongo
from pymongo import MongoClient

def make_wd(innerlist):
    datadict = {
        'a': innerlist[0],
        'b': innerlist[1],
        'c': innerlist[2],
        'd': innerlist[3],
        'e': innerlist[4],
        'f': innerlist[5],
        'g': innerlist[6],
        'h': "not available" if not innerlist[7] else innerlist[7]
    }
    return datadict

if __name__ == '__main__':
    try:
        client = MongoClient()
    except :
        print("Could not connect to MongoDB")
    db = client.testdb
    innerlist = ['66957039892995', '-70', '-70', '-70', '1', '1', '0', '']
    testdict = make_wd(innerlist)
    db.testcollection.insert_one(testdict)

编辑:脚本:

{{1}}

1 个答案:

答案 0 :(得分:-1)

使用ipdb放置断点并在运行脚本时检查列表中的实际内容

您可以通过安装pip install ipdb

来完成

并尝试在创建dict之前放置断点

import ipdb;ipdb.set_trace()

对于没有第7个索引的情况,您应该尝试使用

if len(your_list)>7 and your_list[7]:
    data = your_list[7]
else:
    data = "Not Available"

并使用数据分配" h"