擅长:python、mysql、java
<p>将排序后的输入存储在<code>OrderedDict</code>(以<code>tag</code>作为键,<code>Data</code>作为值)。这将导致每个等价类中只有一个<code>Data</code>存储在<code>OrderedDict</code></p>
<pre><code>>>> from collections import namedtuple, OrderedDict
>>> Data = namedtuple('Data', ('tag', 'rank'))
>>> n = 3
>>> algorithm_input = { Data('a', 200), Data('a', 100), Data('b', 50), Data('c', 10), Data('d', 5) }
>>>
>>> set(list(OrderedDict((d.tag, d) for d in sorted(algorithm_input)).values())[:n])
{Data(tag='b', rank=50), Data(tag='a', rank=200), Data(tag='c', rank=10)}
</code></pre>