擅长:python、mysql、java
<p>如果您试图基于值进行排序,那么<code>key</code>参数应该得到一个函数,该函数可以给出与当前键对应的值,如下所示</p>
<pre><code>d = {'google com':1132,'akamaiedge net':378,'bing com':381,'microsoft com':197}
for key in sorted(d, key=d.get):
print "{:15} - {}".format(key, d[key])
</code></pre>
<p><strong>输出</strong></p>
<pre><code>microsoft com - 197
akamaiedge net - 378
bing com - 381
google com - 1132
</code></pre>
<p>现在,每当排序算法在字典中选取一个键时,它都会调用<code>key</code>函数,这是字典的getter函数,它将给出对应于键的值。因此,与键对应的值将用于比较。你知道吗</p>
<p><strong>注意1:</strong>上一个代码的问题是,您使用的是<code>operator.itemgetter(3)</code>,它将获得键中索引3处的元素。键是字符串,因此键中的第四个字符将用于比较。这就是为什么你问题的最后一个例子</p>
<pre><code>mic*r*osoft com 197
aka*m*aiedge net 378
goo*g*le com 1132
bin*g* com 381
</code></pre>
<p>按字母顺序<code>r > m > g</code>。你知道吗</p>
<p><strong>注2:</strong>第二个示例的问题是,sorted不改变<code>x</code>,它返回一个新列表。所以,您仍然只使用未排序的<code>x</code>。你知道吗</p>