擅长:python、mysql、java
<p>如果你把你的解决方案放在一个函数中,你可以对任意两个dict调用它。另外,如果通过分解嵌套函数的参数来处理函数,则可以部分地应用第一个dict来获取只需要第二个dict的函数(或者可以使用<code>functools.partial</code>),这样可以很容易地映射:</p>
<pre><code>def similarity (a):
def _ (b):
sharedValue = set(a.items()) & set(b.items())
dictLength = len(a)
scoreOfSimilarity = len(sharedValue)
return scoreOfSimilarity/dictLength
return _
</code></pre>
<p>旁白:以上内容也可以通过嵌套lambda写成单个表达式:</p>
^{pr2}$
<p>现在,您可以通过地图获得dictA和余数之间的相似性:</p>
<pre><code>otherDicts = [dictB, dictC, dictD]
scores = map(similarity(dictA), otherdicts)
</code></pre>
<p>现在您可以使用<code>min()</code>(或<code>max()</code>,或其他任何方式)从分数列表中获得最佳成绩:</p>
<pre><code>winner = min(scores)
</code></pre>
<p>警告:我没有测试以上任何一个。在</p>