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

我把你的代码稍微的重新整理了一下,下次注意对齐和缩进(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这个域,所以才导致会越界。