擅长:python、mysql、java
<p>我们可以使用Python标准库中的<code>Counter</code>。你知道吗</p>
<p>计数器计算在iterable中找到项的次数。从一个列表构造它本质上会产生一个从列表中的每个项目到出现次数的映射。你知道吗</p>
<p>在两个计数器上执行集合交集将为我们提供在两个列表中找到的项目的计数。但是,我们不是寻找重复的数量,而是寻找一个元素与另一个元素匹配的次数。这意味着我们需要使用乘法而不是最小的集合交集。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>from collections import Counter
def merge(d1, d2):
return {k: (d1[k], d2[k]) for k in d1 if k in d2}
def num_dups(l1, l2):
c1, c2 = Counter(l1), Counter(l2)
dups = merge(c1, c2)
return sum(x * y for x, y in dups.values())
</code></pre>