2
我目前正在与Q学习和我有一个字典Q [状态,行动] 其中每个状态可以是任何东西即字符串,数字,列表..取决于应用。每个州有3或4个可能的行动。对于每个状态,我需要找到具有最高Q值的动作。问题是我不知道如何访问所有可能的行动,该国已直接从具有两个键的字典,所以我曾尝试使用for循环:Python访问字典,有两个键只使用一个键
for statex, actionx in self.array:
if statex == state and (actionx != None):
y[actionx] = self.array[statex, actionx]
y.argMax()
凡argMax()
def argMax(self):
"""
Returns the key with the highest value.
"""
if len(self.keys()) == 0: return None
all = self.items()
values = [x[1] for x in all]
maxIndex = values.index(max(values))
return all[maxIndex][0]
问题是计算时间太长。任何想法,我可以做得更快,可能通过消除循环?
尝试使用'ITER(self.array)'或'ITER(self.items())' – ytpillai
获取元组的列表将键作为第一个元素,将值作为第二个元素,并对其使用迭代器。通常情况下,更快的记忆方式 – ytpillai
没有任何改变 –