Skip to main content
 首页 » 编程设计

python之在多个数组中查找元素数

2025年05月04日24zhoujg

给定两个列表,我需要制作第三个列表,其中包含在所有列表 1 和列表 2 中仅出现两次的元素。 如何在合理的时间和空间复杂度下高效地做到这一点?

我的解决方案: 使用字典:

from collections import defaultdict 
 
 
L=['a','b','c','d','a','d','e','e','g','h'] 
K=['a','g','i','g','g','i','r','r'] 
 
d=defaultdict(int) 
 
for i in L: 
    d[i]+=1 
for j in K: 
    d[j]+=1 
 
print d 
result=[] 
for key,val in d.iteritems(): 
  if val == 2: 
     result.append(key) 
 
print result 

我想要的输出是:

['e', 'd', 'i', 'r'] 

我可以获得更好的 pythonic 解决方案吗?

谢谢。

请您参考如下方法:

可以使用集合的计数器类来简化代码:

from collections import Counter 
... 
d = Counter(L+K) #we are combining to process both at once 

此外,您可以通过执行条件 for 循环来组合行。因此,只有当值为 2 时,我们才会将其追加到我们的数组中。

L=['a','b','c','d','a','d','e','e','g','h'] 
K=['a','g','i','g','g','i','r','r'] 
print [k for k, v in Counter(L+K).iteritems() if v == 2]