【问题标题】:Out of index range error, a while loop containing list and dictionary超出索引范围错误,包含列表和字典的 while 循环
【发布时间】:2015-06-06 11:25:03
【问题描述】:

在为我之前的问题找到替代解决方案后,我遇到了一个新问题。我问了我的老师,他建议我使用这种格式的 dict(zip)。

final={}
rawLines=open("x.txt").readlines()
y=0
while y <5:
 for line in rawLines:
    userlist=rawLines[y].split(',')
    userid=userlist[0]
    avmph=userlist[1]
    print(avmph)
    #print(userid)
    for lines in rawLines[0:]:
        lines=lines[:-1]
        items=lines.split(',')
        final[items[0]]=dict(zip(userid,avmph))
 y=y+1
else:
 sorted[avmph()]
 print(avmph)
 print(userid)

我在行中遇到超出索引范围的错误。错误信息

Traceback (most recent call last):
  File "C:\Users\Ryan\Desktop\test.py", line 6, in <module>
    userlist=rawLines[y].split(',')
IndexError: list index out of range

我使用了 .csv 文件样式的 .txt 文件,它允许我创建列表。我最终需要对平均每小时英里数进行排序,并同时返回用户 ID。我的主要问题似乎在于'y'变量和我的while循环 (链接到我的 .txt 文件的截图)http://gyazo.com/ac8f734b9bb625398de6412191a64981

【问题讨论】:

  • 旁白:很高兴知道您已经学会了发布您的尝试(与上次不同)。但是,您需要包含错误的完整回溯以帮助我们进行调试。
  • 如果没有 x.txt 文件和回溯,我认为没有答案。
  • 提示:while y &lt; 5 表示 Y 将遍历第 0、1、2、3 和 4 行。这是多少个数字,您的输入文件有多少行?

标签: python list dictionary


【解决方案1】:

如果你写

y=0
while y < 5: print(y); y+=1

那么输出将是:

0
1
2
3
4

& 你的文件只包含 4 行。 rawlines[y],其中 y=4 尝试访问文件的第五行。这给出了这个错误。将第四行替换为 while y 以修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多