输入:
[[1,2,3],[1,5,7],[1,9,3],[4,3,8]]
预期结果:
[1,3]
(如果超过50%的输入列表中存在元素,则将元素添加到结果中)。
我正在寻找优雅,pythonic解决方案:)。抱歉我的英语不好。
答案 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()]。