擅长:python、mysql、java
<p>可以将值转换为元组。这样,它们就可以散列,您可以将它们放入dict中:</p>
<pre><code>dict1 = {'key1': [1,2,3], 'key2': [3,4,5]}
dict2 = {'key3': [2,3,4], 'key4': [1,2,3]}
same_lists = {}
for d in [dict1, dict2]:
for k, v in d.items():
same_lists.setdefault(tuple(v), []).append(k)
print(same_lists)
# {(1, 2, 3): ['key1', 'key4'], (3, 4, 5): ['key2'], (2, 3, 4): ['key3']}
</code></pre>
<p>现在您只需迭代dict的值并查找多个键:</p>
<pre><code>for common_keys in same_lists.values():
if len(common_keys) > 1:
print(common_keys)
# ['key1', 'key4']
</code></pre>
<p>与<code>O(n**2)</code>代码相比,这个解决方案是<code>O(n)</code></p>