<p>我有两本字典和一些共享键,还有一些不同的。(每本词典都有一些键,而另一本词典中没有)。如果只存在共享密钥,那么比较这两个字典是否相等的好方法是什么?你知道吗</p>
<p>换言之,我想要一个最简单的方法来计算:</p>
<pre><code>commonkeys = set(dict1).intersection(dict2)
simple1 = dict((k, v) for k,v in dict1.items() if k in commonkeys)
simple2 = dict((k, v) for k,v in dict2.items() if k in commonkeys)
return simple1 == simple2
</code></pre>
<p>我设法把它简化为:</p>
<pre><code>commonkeys = set(dict1).intersection(dict2)
return all(dict1[key] == dict2[key] for key in commonkeys)
</code></pre>
<p>但我希望有一种不需要预先计算公共密钥的方法。(实际上,我有两个字典列表,我将两两比较。每个列表中的所有字典都有相同的键集,因此,如果需要像上面的<code>commonkeys</code>这样的计算,则只需执行一次。)</p>
<p>试试这个</p>
<pre><code>dict((k, dict1[k]) for k in dict1.keys() + dict2.keys() if dict1.get(k) == dict2.get(k))
</code></pre>
<p>O(m+n)比较。你知道吗</p>
<p>如果你想要一个正确/错误的结果,对上面的结果做一个简单的检查。否则返回true</p>