擅长:python、mysql、java
<p>为了理解为什么您尝试的方法不起作用,让我们确保您理解<code>itemgetter(1, 2)</code>是什么。首先,<code>itemgetter</code>是一个函数。但更重要的是,它是一个返回函数的函数,而返回的函数正是用作排序的关键函数的函数。要了解为什么将字符串转换为int的尝试没有成功,让我们实现一个始终接受两个参数的<code>itemgetter</code>版本:</p>
<pre class="lang-py prettyprint-override"><code>def itemgetter(i, j):
def fn(e):
return (e[i], e[j])
return fn
</code></pre>
<p>用作键的是内部函数<code>fn</code>的返回值。您所做的是将<code>j</code>转换为int,而不是<code>e[j]</code>。为此,必须捕获<code>fn</code>的结果,执行强制转换,然后返回结果:</p>
^{2}$
<p>然后,您可以使用以下方法正确执行排序:</p>
<pre class="lang-py prettyprint-override"><code>sorted_rank = sorted(temp_rank, key=keyfunc, reverse=True)
</code></pre>