在python中的所有列表中查找几个列表中的公共元素

时间:2014-11-27 02:35:38

标签: python

假设我的代码中有以下列表:

l1 = [1,2,3,4,5]
l2 = [2,3,5,7,9]
l3 = [4,9,11,12,13]
l4 = [1,2,5,7,8]
l5 = [1,3,4,5,9]

我想要输出,使其包含给定5个列表中3个中常见的元素,在这种情况下:

op = [1,2,3,4,5,9]

我可以得到任何帮助吗?感谢。

2 个答案:

答案 0 :(得分:2)

m = {}
for l in [l1, l2, l3, l4, l5]:
    for x in l:
        try:
            m[x] += 1
        except KeyError:
            m[x] = 1

op = []
for x in m:
    if m[x] >= 3:
        op.append(x)

答案 1 :(得分:2)

这可以吗?

>>> l1 = [1,2,3,4,5]
>>> l2 = [2,3,5,7,9]
>>> l3 = [4,9,11,12,13]
>>> l4 = [1,2,5,7,8]
>>> l5 = [1,3,4,5,9]
>>> all = l1 + l2 + l3 + l4 + l5
>>> c = [[x,all.count(x)] for x in set(all)]
>>> [x[0] for x in c if x[1] > 2]
[1, 2, 3, 4, 5, 9]
>>>

更新为评论中提到的@TessellatingHeckler:

>>> all = sum([ list(set(x)) for x in (l1,l2,l3,l4,l5) ],[])
>>> c = [[x,all.count(x)] for x in set(all)]
>>> [x[0] for x in c if x[1] > 2]
[1, 2, 3, 4, 5, 9]
>>>