2016-07-25 75 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 

這是比其他選項更詳細一些,但似乎是你打算做的:迭代列表的索引。

相關問題