0

输入:

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

预期结果:

[1,3]

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

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

4

1 回答 1

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})

[.. 哎呀,刚刚注意到您使用的是 Python 3,所以我们需要 .items()]。

于 2013-08-11T19:05:03.083 回答