查找大多数列表中存在的元素

时间:2013-08-11 19:01:26

标签: python list python-3.x

输入:

[[1,2,3],[1,5,7],[1,9,3],[4,3,8]]

预期结果:

[1,3]

(如果超过50%的输入列表中存在元素,则将元素添加到结果中)。

我正在寻找优雅,pythonic解决方案:)。抱歉我的英语不好。

1 个答案:

答案 0 :(得分:4)

怎么样:

>>> from collections import Counter
>>> s = [[1,2,3],[1,5,7],[1,9,3],[4,3,8]]
>>> count = Counter(term for subseq in s for term in set(subseq))
>>> [k for k,v in count.items() if v > len(s)//2]
[1, 3]

Counter是一个方便的工具,它很重要:

>>> Counter([1,2,3,3,2])
Counter({2: 2, 3: 2, 1: 1})

[.. oops,只是注意到你正在使用Python 3,所以我们需要.items()]。