平面列表中最常见的值
Most common value in flat list
有哪些方法可以获取列表中最常见的值?
l = [1,2,2]
到目前为止我在做:
Counter(l).most_common()[0][0]
但我想知道是否有列表方法或其他方法'simpler'可以做到这一点?
您可以使用 max
with list.count
,但它不如您当前的解决方案有效:
>>> l = [1, 2, 2]
>>> max(set(l), key=l.count)
2
这已经差不多了 - 虽然我建议使用 .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))
这几乎等同于@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
执行与上述相同的操作,只是没有单个元组的列表。
有哪些方法可以获取列表中最常见的值?
l = [1,2,2]
到目前为止我在做:
Counter(l).most_common()[0][0]
但我想知道是否有列表方法或其他方法'simpler'可以做到这一点?
您可以使用 max
with list.count
,但它不如您当前的解决方案有效:
>>> l = [1, 2, 2]
>>> max(set(l), key=l.count)
2
这已经差不多了 - 虽然我建议使用 .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))
这几乎等同于@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
执行与上述相同的操作,只是没有单个元组的列表。