8

可以这样访问计数器的最大值:

c = Counter()
c['foo'] = 124123
c['bar'] = 43
c['foofro'] =5676
c['barbar'] = 234
# This only prints the max key
print max(c), src_sense[max(c)] 
# print the max key of the value
x = max(src_sense.iteritems(), key=operator.itemgetter(1))[0]
print x, src_sense[x]

如果我想要一个按降序计数的排序计数器怎么办?

我如何访问第二个最大值,或者第三个或第 N 个最大值键?

4

1 回答 1

26

集合的 most_common(self, n=None) 方法.Counter 实例

列出 n 个最常见的元素及其从最常见到最少的计数。如果 n 为无,则列出所有元素计数。

>>> Counter('abcdeabcdabcaba').most_common(3)
[('a', 5), ('b', 4), ('c', 3)]

所以:

>>> c.most_common()
[('foo', 124123), ('foofro', 5676), ('barbar', 234), ('bar', 43)]
>>> c.most_common(2)[-1]
('foofro', 5676)

请注意,这max(c)可能不会返回您想要的:迭代 aCounter是迭代键,所以max(c) == max(c.keys()) == 'foofro',因为它是字符串排序后的最后一个。你需要做类似的事情

>>> max(c, key=c.get)
'foo'

获得具有最大值的 (a) 键。以类似的方式,您可以most_common完全放弃并自己进行排序:

>>> sorted(c, key=c.get)[-2]
'foofro'
于 2013-04-06T15:07:07.263 回答