平面列表中最常见的价值

时间:2015-02-01 06:46:24

标签: python list

有哪些方法可以获得列表中最常见的值?

l = [1,2,2]

到目前为止,我正在做:

Counter(l).most_common()[0][0]

但我想知道是否有列表方法或其他更简单的方法'这样做?

3 个答案:

答案 0 :(得分:6)

这几乎和它一样好 - 尽管我建议使用.most_common(1),它比.most_common()效率更高*并且像这样使用它:

(value, count), = Counter(sequence).most_common(1)

来自collections.Counter的来源:

if n is None:
    return sorted(self.items(), key=_itemgetter(1), reverse=True)
return _heapq.nlargest(n, self.items(), key=_itemgetter(1))

答案 1 :(得分:3)

您可以将maxlist.count一起使用,但它作为您当前的解决方案效率不高:

>>> l = [1, 2, 2]
>>> max(set(l), key=l.count)
2

答案 2 :(得分:2)

这几乎等同于@JonClement的解决方案

>>> from collections import Counter
>>> l = [1,2,2]
>>> c = Counter(l)
>>> max(c, key=c.get)
2

heapq.nlargest将运行

if n == 1:
    it = iter(iterable)
    head = list(islice(it, 1))
    if not head:
        return []
    if key is None:
        return [max(chain(head, it))]
    return [max(chain(head, it), key=key)]

在这种特殊情况下n=1执行与上面相同的操作而没有单个元组的列表。