python中的KeyError ...

时间:2014-01-08 18:57:05

标签: python keyerror

我构建了一个3D数组self.QL={} 用0来“擦除”数组:

for loop0 in range(50):
    for loop1 in range(50):
        for loop2 in range(self.actions):
            self.QL[loop0, loop1, loop2] = 0

但是当我运行程序并尝试从数组中获取值时,它会出现错误:

File "Bots/QL.py", line 135, in _chooseaction
self.vQ = self.QL[state[0],state[1],a]
KeyError: (0, 63, 0)

在第135行我有:

def _chooseaction(self, state):
    self.vQ = 0
    self.action = 0
    self.temp = -1000

        for a in range(self.actions):
         self.vQ = self.QL[state[0],state[1],a]
           if self.vQ > self.temp:
             self.temp=self.vQ
             self.action=a

          return self.action

我做错了什么?

1 个答案:

答案 0 :(得分:2)

state[1]的值为63,但您只使用0到49之间的值初始化它。

这就是为什么它说密钥(0,63,0)不存在。

也许你可以使用defaultdict?

from collections import defaultdict

self.QL = defaultdict(int)

现在,self.QL基本上是一个dict,对于它没有的任何值都是0。