<p>你似乎需要的是<code>groupby()</code>。你知道吗</p>
<pre><code>from itertools import groupby
import pprint
l = [(u'Agriculture', u'Farming', 3L), (u'Agriculture', u'Business', 2L),
(u'Agriculture', u'Animal', 2L), (u'Agriculture', u'Illness', 1L),
(u'Agriculture', u'Health', 1L), (u'Agriculture', u'Disability', 1L),
(u'Agriculture', u'Carers', 1L), (u'Employment', u'Money', 1L),
(u'Employment', u'Business', 1L), (u'Employment', u'Tax', 1L),
(u'Employment', u'Debt', 1L), (u'Employment', u'Budget', 1L),
(u'Environment', u'Business', 2L), (u'Environment', u'Animal', 2L),
(u'Environment', u'Trees', 2L)]
pprint.pprint([sorted(x[1], key=(lambda x: -1*x[2]))[:3]
for x in groupby(l, lambda x: x[0])])
</code></pre>
<p>它给出:</p>
<pre><code>[[(u'Agriculture', u'Farming', 3L),
(u'Agriculture', u'Business', 2L),
(u'Agriculture', u'Animal', 2L)],
[(u'Employment', u'Money', 1L),
(u'Employment', u'Business', 1L),
(u'Employment', u'Tax', 1L)],
[(u'Environment', u'Business', 2L),
(u'Environment', u'Animal', 2L),
(u'Environment', u'Trees', 2L)]]
</code></pre>