添加到字典问题python

时间:2014-06-14 20:40:13

标签: python list dictionary

这是我的代码的一部分:

add_values=[2,5,10,20,50,100,200,500,1000,2000,5000,10000,20000,50000]
for each in add_values:
    print(each)
    s=add_values[each]
    s=int(s)
    h=s*100
    mydict[add_values[each]]=s

它正在提出这个错误:

IndexError: list index out of range 
(For the s=add_values[each] line)

请告诉我这里有什么问题,需要改变什么,

感谢。

4 个答案:

答案 0 :(得分:1)

考虑到达add_values中的第五项:

for each in add_values: 
    print(each) # each == 50
    s=add_values[each] # what's the fiftieth item in 'add_values'?!

您无需索引到add_values,您已经在访问该值 - 将add_values[each]替换为each

答案 1 :(得分:0)

each是值,您不能将其用作索引(主要是因为add_values的大小为14且您在add_values内的值大于此值) :

add_values=[2,5,10,20,50,100,200,500,1000,2000,5000,10000,20000,50000]
for each in add_values:
    print(each)
    s=each
    s=int(s)
    h=s*100
    mydict[each]=s

另一种解决方案是使用索引:

add_values=[2,5,10,20,50,100,200,500,1000,2000,5000,10000,20000,50000]
for i in range(len(add_values)):
    print(add_values[i])
    s=add_values[i]
    s=int(s)
    h=s*100
    mydict[add_values[i]]=s

答案 2 :(得分:0)

您正在使用数组元素作为数组 index ,这就是您遇到越界错误的原因。

使用Python的for循环表示法,您不需要明确地访问索引;只需访问元素,在您的情况下为each

for each in add_values:
    print(each)
    s=each              # kind of redundant, but this should work

答案 3 :(得分:0)

for each in add_valueeach设置为2,5,10,20,50等。在循环的第4次迭代中,each为20.当您说{{1}时},您收到错误,因为add_values[each]只有14个元素而您正在尝试访问元素编号20.如果尝试访问元素编号50000,则会遇到更多麻烦。