擅长:python、mysql、java
<pre><code>import itertools
group_func = lambda o: (o.classification, o.type)
map(lambda pair: (pair[0], min(pair[1], key=lambda o: o.last - o.first)),
itertools.groupby(sorted(l, key=group_func), group_func))
</code></pre>
<p><code>group_func</code>返回一个包含对象分类的元组键,然后是type(例如<code>('A', 'x')</code>)。这首先用于对列表<code>l</code>(<code>sorted</code>调用)进行排序。然后,我们在排序后的列表上调用<code>groupby</code>,使用<code>group_func</code>分组到子列表中。每次密钥更改,我们都有一个新的子列表。与SQL不同,groupby要求在同一个键上对列表进行预排序。<code>map</code>接受<code>groupby</code>函数的输出。对于每个组,<code>map</code>返回一个元组。第一个元素是<code>pair[0]</code>,它是键<code>('A', 'x')</code>。第二个是组(<code>pair[1]</code>)的最小值,由<code>last - first</code>键确定。在</p>