<p>可以将Python的<code>min</code>函数与<code>land_rectangle_area</code>函数一起作为键来执行此操作:</p>
<pre><code>def land_rectangle_area(x1, y1, x2, y2):
area=abs((int(x1)-int(x2))*(int(y1)-int(y2)))
return(area)
>>> min(islands.items(), key=lambda (k,t): land_rectangle_area(*t))
('Banana island', (3, 5, 7, 6))
</code></pre>
<p>你可以用同样的方法找到<code>max</code>:</p>
<pre><code>>>> max(islands.items(), key=lambda (k,t): land_rectangle_area(*t))
('Pineapple island', (8, 8, 9, 20))
</code></pre>
<p>或者,使用列表理解将元组转换为区域:</p>
<pre><code>>>> [(k,land_rectangle_area(*t)) for k,t in islands.items()]
[('Pineapple island', 12), ('Coconut island', 12), ('Banana island', 4), ('Mango island', 9)]
</code></pre>
<p>然后取<code>min</code>:</p>
<pre><code>>>> min([(k,land_rectangle_area(*t)) for k,t in islands.items()], key=lambda t: t[1])
</code></pre>
<p>或者从最小到最大排序:</p>
<pre><code>>>> sorted(islands.items(), key=lambda (k,t): land_rectangle_area(*t))
[('Banana island', (3, 5, 7, 6)), ('Mango island', (10, 3, 19, 4)), ('Pineapple island', (8, 8, 9, 20)), ('Coconut island', (2, 13, 5, 9))]
</code></pre>
<p>(因为椰子岛和菠萝岛的面积是一样的,它们中的任何一个在功能和种类上都可以被认为是<code>max</code>。您将添加另一个密钥以确定……)</p>
<p>或者您可以绕过命名函数,只需将<code>min</code>与键函数一起使用:</p>
<pre><code>>>> min(islands.items(), key=lambda (k,t): abs((t[0]-t[2])*(t[1]-t[3])))
</code></pre>