擅长:python、mysql、java
<p>具有<code>groupby</code>的基本binner:</p>
<pre><code>from itertools import groupby
from math import floor
# data must be sorted
data = [ ['12', 'brett', 5548],
['22.3', 'troy', 9514],
['8.1', 'hings', 12635],
['34.2', 'dab', 17666],
['4q3', 'sigma', 18065],
['4q3', 'delta', 18068] ]
groups = []
for k, g in groupby(data, lambda x: floor(x[-1]/3500)):
groups.append(list(g))
print groups
</code></pre>
<p>退货:</p>
^{pr2}$
<p>当一组的最大值减去之前组的最小值小于3500时,您可以合并这些组。你会得到</p>
<pre><code>[
[
['12', 'brett', 5548]
],
[
['22.3', 'troy', 9514],
['8.1', 'hings', 12635]
],
[
['34.2', 'dab', 17666],
['4q3', 'sigma', 18065],
['4q3', 'delta', 18068]
]
]
</code></pre>
<p>即使在<code>groupby</code>之后进行合并,我认为Anurag Uniyal的解决方案在一般情况下仍然可以实现更好的分组。在</p>