擅长:python、mysql、java
<p>既然你说成本是整数,那么你可以使用:</p>
<pre><code>def neardup( items ):
forbidden = set()
for elem in items:
key = elem['name'], elem['code'], int(elem['cost'])
if key not in forbidden:
yield elem
for diff in (-1,0,1): # add all keys invalidated by this
key = elem['name'], elem['code'], int(elem['cost'])-diff
forbidden.add(key)
</code></pre>
<p>下面是一种不那么复杂的方法来计算差异:</p>
^{pr2}$
<p>这两种解决方案都避免重新扫描每个项目的整个列表。毕竟,只有在<code>(name, code)</code>相等的情况下,成本才会变得有趣,所以您可以使用字典快速查找所有候选项。在</p>