Python 如何避免在值迭代的实现中使用max()?

Python 如何避免在值迭代的实现中使用max()?,python,dictionary,max,reinforcement-learning,Python,Dictionary,Max,Reinforcement Learning,在本页中,您将找到值迭代算法 我使用dictionary of dictionary实现了表Q(s,a)。在Python中: q = {s: {a: value}} 现在,问题是,我必须找到Q(s,a)列表的最大值,这是非常昂贵的。我已经分析了我的代码,几乎80%的时间都花在了{内置方法max}上 有什么聪明的方法可以避免它吗?如果在任何给定时间,max操作是您需要的唯一操作,我建议您更改数据结构。尝试使用max堆,您可以手动编写代码或使用一些Python库。您可以将自定义比较函数放入该堆中,

在本页中,您将找到值迭代算法

我使用dictionary of dictionary实现了表Q(s,a)。在Python中:

q = {s: {a: value}}
现在,问题是,我必须找到Q(s,a)列表的最大值,这是非常昂贵的。我已经分析了我的代码,几乎80%的时间都花在了{内置方法max}上


有什么聪明的方法可以避免它吗?

如果在任何给定时间,
max
操作是您需要的唯一操作,我建议您更改数据结构。尝试使用
max堆
,您可以手动编写代码或使用一些
Python
库。您可以将自定义比较函数放入该堆中,max元素始终保持根。堆中的所有操作都将是O
(lg n)
。这足够令人满意吗?我通过将最大值存储在字典中解决了这个问题。O访问中的
(1)
。顺便说一句,谢谢。但是如果您需要访问上一个最大元素,情况会怎样呢?你没有在那个箱子里存储历史记录吗?你的系统在本质上总是递增的吗?不,我不认为我需要历史记录。你看过算法了吗,你觉得怎么样?