擅长:python、mysql、java
<p>经典的方法是:在<code>for</code>循环结束时立即返回。这意味着在第一次迭代后返回最大值。因此,它尚未评估所有元素。你知道吗</p>
<p>也就是说,通过使用<code>max(..)</code>,这可以得到很大的改善:</p>
<pre><code>from operator import itemgetter
max_kv = max(autolager.items(), key=itemgetter(1))
</code></pre>
<p>这将产生一个包含键值组合和最大值的2元组,因此:</p>
<pre><code>>>> max(autolager.items(), key=itemgetter(1))
('BMW', 11)
</code></pre>
<p>如果要获取具有此值的<em>所有</em>键,我们可以再次运行字典:</p>
<pre><code>from operator import itemgetter
def maxlagerbestand(autolager):
max_v = max(autolager.values())
return max_v, [k for k, v in autolager.items() if v == max_v]
</code></pre>
<p>然后返回:</p>
<pre><code>>>> maxlagerbestand(autolager)
(11, ['BMW'])
</code></pre>
<p>对于一个空字典(<code>{}</code>),上面会出错。我们可以将<code>default=</code>值添加到<code>max(..)</code>以返回给定字典为空的值:</p>
<pre><code>def maxlagerbestand(autolager):
max_v = max(autolager.values()<b>, default=None</b>)
return max_v, [k for k, v in autolager.items() if v == max_v]</code></pre>
<p>对于空字典,则返回:</p>
<pre><code>>>> maxlagerbestand({})
(None, [])
</code></pre>