2016-07-25 73 views
1
q_values_table = {} 
light = ['red', 'green'] 
v_actions = ['None','forward','left','right'] 


for i in v_actions: 
    for j in light: 
     for k in v_actions: 
      for l in v_actions: 
       for m in v_actions: 
        q_values_table[v_actions[i],light[j],v_actions[k],v_actions[l],v_actions[m]] = None 

print q_values_table 

我想我的输出像{('right','red','forward','right','left') : None} 所有的值。无法使用元组和值创建字典? (列表索引必须是整数,而不是str)

但是当你遍历一个list我得到这个错误list indices must be integers, not str

回答

2

,你得到的值,而不是指数。如果你想索引,使用range

for i in range(len(v_actions)): 
    ... 

如果你想索引和值,使用enumerate

for i, value in enumerate(v_actions): 
    ... 

既然这样,你试图访问使用字符串包含在列表中的元素列表作为索引。

1

只需更换到最后一行:

q_values_table[ i, j, k, l, m ] = None

0

您还可以使用范围(LEN(LST))只是遍历目录的索引:

q_values_table = {} 
light = ['red', 'green'] 
v_actions = ['None','forward','left','right'] 
for i in range(len(v_actions)): 
    for j in range(len(light)): 
     for k in range(len(v_actions)): 
      for l in range(len(v_actions)): 
       for m in range(len(v_actions)): 
        q_values_table[v_actions[i],light[j],v_actions[k],v_actions[l],v_actions[m]] = None 

print q_values_table 

这是比其他选项更详细一些,但似乎是你打算做的:迭代列表的索引。

相关问题