zc1307 2017-01-03 08:34 采纳率: 0%
浏览 2155

Python脚本 索引越界的问题

sort data

1: for d in sorted(biom['data'], key=itemgetter(2), reverse=True):
name = biom['rows'][d[0]]['id'] if opts.source != 'Subsystems' else biom['rows'][d[0]]['metadata']['ontology'][-1]
if len(top_ann) >= opts.top:
break
if sub_ann and (name not in sub_ann):
continue
top_ann[name] = d[2]

# output data
for k, v in sorted(top_ann.items(), key=itemgetter(1), reverse=True):
    safe_print("%s\t%d\n" %(k, v))

return 0

2:if name == "__main__":
sys.exit( main(sys.argv) )

    提示两处错误,1,2。 for d in sorted(biom['data'], key=itemgetter(2), reverse=True):

IndexError: list index out of range

  • 写回答

1条回答

  • 小邓在路上 2017-01-04 01:40
    关注

    我把你的代码稍微的重新整理了一下,下次注意对齐和缩进(CSDN如果要插入代码的话,注意文本框上面的尖括号,点击会出现双引号,把代码
    贴在双引号中就可以保证对齐和缩进了)

     for d in sorted(biom['data'], key=itemgetter(2), reverse=True):
        name = biom['rows'][d[0]]['id'] if opts.source != 'Subsystems' else biom['rows'][d[0]]['metadata']['ontology'][-1]
        if len(top_ann) >= opts.top:
            break
        if sub_ann and (name not in sub_ann):
            continue
        top_ann[name] = d[2]
        # output data
        for k, v in sorted(top_ann.items(), key=itemgetter(1), reverse=True):
            safe_print("%s\t%d\n" %(k, v))
    
    return 0
    if name == "__main__":
    sys.exit( main(sys.argv) )
        提示两处错误,1,2。 for d in sorted(biom['data'], key=itemgetter(2), reverse=True):
    IndexError: list index out of range
    

    另外从提供的错误来看,我初步判定是你的biom['date']中根本就没有2这个域,所以才导致会越界。

    评论

报告相同问题?

悬赏问题

  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用