我正在尝试访问字典中列表中的索引项。字典有两个键,第一个是id键,然后每个id都有一个关联的字典,其中datetime对象作为键。
我正在过滤字典,就像我之前在代码中做过很多次一样,并且有一个特殊的“列表索引超出范围”错误。我知道python开始索引为0并考虑到了这一点。
当我收到此错误时,我正在尝试访问列表中的第5个元素。但是,如果我将python调试器插入到我的代码中,那么我就可以打印出产生错误的相同索引元素。
An image of the command prompt when I try to run the code
def plot_histogram(dict, newpath):
norm_res = []
res = [] # should I also plot a histogram of the residual?
for id in dict:
for dt in dict[id]:
import pdb; pdb.set_trace()
if dict[id][dt][5] is not None: # np.nan
norm_res.append(float(dict[id][dt][5])) # Need to exclud None results. But want to exclude them for both
# norm res and res at the same time so that neither result is skewed
res.append(float(dict[id][dt][4])) # unfailry. (?)
f = plt.figure()
sns.distplot(norm_res)
f.savefig(newpath + r'\sns_norm_res_histogram.png', dpi=500)
g = plt.figure()
sns.distplot(res)
g.savefig(newpath + r'\sns_res_histogram.png', dpi=500)
return
我认为错误可能与我尝试访问列表中的最后一个元素的事实有关,有时这个元素是None类型。这是否意味着当None元素位于最后位置时,列表的长度会缩短?
提前感谢您的任何帮助。
答案 0 :(得分:1)
您收到错误的原因是某些 dict[id][dt][5]
的{{1}}和某些 id
不存在。您在调试时可以打印的那个可能有不同的dt
或id
。