无法创建具有元组和值的字典?(列表索引必须是整数,而不是str)

2024-05-05 03:08:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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} 所有的价值观。你知道吗

但是我得到了这个错误list indices must be integers, not str


Tags: inrightnoneactionsfor错误tablegreen
3条回答

迭代list时,得到的是值,而不是索引。如果需要索引,请使用range

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

如果需要索引和值,请使用enumerate

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

目前,您正试图使用列表中包含的字符串作为索引来访问列表元素。你知道吗

只需将最后一行替换为:

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

您还可以使用range(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

这比提供的其他选项要详细一些,但似乎正是您想要做的:迭代列表的索引。你知道吗

相关问题 更多 >