Python清单中最常见的元素


13

这是使用Python打高尔夫球的提示问题,这是main的主题。

我正在寻找以最短的方法获取Python列表中所有最常见元素的最短方法。这是我尝试过的方法,假设列表位于一个名为的变量中l

from statistics import*
mode(l)

如果存在多种模式,则会引发错误。

max(l,key=l.count)

这仅返回1个项目,我需要获取所有具有最大数量的元素。

from collections import*
Counter(l).most_common()

这将返回的元组列表(element, count),按计数排序。从中我可以拉出所有相应元素等于第一个元素的所有元素,但是我认为没有比这更好的高尔夫方法了:

from collections import*
c=Counter(l).most_common()
[s for s,i in c if i==c[0][1]]

我敢肯定有更短的方法!

另外,如果可以在不进行变量分配或不使用的情况下完成此操作l,则我可以将其余代码保留为lambda表达式,以节省更多字节。

编辑:根据@Uriel的建议,我们可以执行以下操作:

{s for s in l if l.count(s)==l.count(max(l,key=l.count))}

我可以别名list.count几个字节:

c=l.count;{s for s in l if c(s)==c(max(l,key=c))}

@Uriel指出我们可以通过以下方式获得更多的字节map

c=l.count;{s for s in l if c(s)==max(map(c,l))}

相关,但不能满足我的需求
musicman523 '17

Answers:


5

这个怎么样?

c=l.count;{x for x in l if c(x)==max(map(c,l))}

附上[*...]以获得列表。


哦,对了,我确实需要一个唯一的列表或集合,谢谢
musicman523 '17

@ musicman523您为什么更新l.count(max(l,key=l.count))max(map(l.count,l))
乌列尔

啊,我没想到那个,谢谢!
musicman523
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.