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

Python 查找大多数列表中存在的元素,python,list,python-3.x,Python,List,Python 3.x,输入: 预期结果: [[1,2,3],[1,5,7],[1,9,3],[4,3,8]] (如果元素存在于超过50%的输入列表中,则将其添加到结果中) 我正在寻找优雅的、蟒蛇式的解决方案:)。对不起,我的英语不好。怎么样: [1,3] 是一个方便的工具,可以计算: >>> from collections import Counter >>> s = [[1,2,3],[1,5,7],[1,9,3],[4,3,8]] >>> count =

输入:

预期结果:

[[1,2,3],[1,5,7],[1,9,3],[4,3,8]]
(如果元素存在于超过50%的输入列表中,则将其添加到结果中)

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

怎么样:

[1,3]
是一个方便的工具,可以计算:

>>> 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]
[…哦,刚刚注意到您正在使用Python 3,所以我们需要.items()。

如何:

[1,3]
是一个方便的工具,可以计算:

>>> 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]

[…哎呀,刚才注意到您正在使用Python 3,所以我们需要.items()。

也许您可以展示您已经提出的非合法/非Python解决方案,以便我们可以帮助您改进它?另外,是否可以保证每个元素在每个子组中最多出现一次?也就是说,这是否会出现在输入中:
[[1,1,2],[3,4,5]
?1)到目前为止,我还没有编写任何解决方案。2) 是的,它是。也许你可以展示你已经提出的非合法/非音速解决方案,这样我们可以帮助你改进它?同时,是否可以保证每个元素在每个子组中最多出现一次?也就是说,这是否会出现在输入中:
[[1,1,2],[3,4,5]
?1)到目前为止,我还没有编写任何解决方案。2) 是的,谢谢你!它看起来(而且效果)很好。我只需要将“iteritems”改为“items”,可能是因为python3。谢谢!它看起来(而且效果)很好。我只需要将“iteritems”改为“items”,可能是因为python3。