Python 计数器的格式化输出

Python 计数器的格式化输出,python,Python,我使用计数器来计算列表项的出现次数。我很难很好地展示它。对于下面的代码 category = Counter(category_list) print category 以下是输出: Counter({'a': 8508, 'c': 345, 'w': 60}) 我必须按如下方式显示上述结果 a 8508 c 345 w 60 我试图迭代计数器对象,但没有成功。有没有一种方法可以很好地打印计数器操作的输出?这种方法有效: >>> from collections impo

我使用计数器来计算列表项的出现次数。我很难很好地展示它。对于下面的代码

category = Counter(category_list)
print category
以下是输出:

Counter({'a': 8508, 'c': 345, 'w': 60})
我必须按如下方式显示上述结果

a 8508
c 345
w 60
我试图迭代计数器对象,但没有成功。有没有一种方法可以很好地打印计数器操作的输出?

这种方法有效:

>>> from collections import Counter
>>> counter = Counter({'a': 8508, 'c': 345, 'w': 60})
>>> for key,value in sorted(counter.iteritems()):
...     print key, value
...
a 8508
c 345
w 60
>>>

这里有一个on和一个on的引用。

计数器本质上是一个字典,因此它有键和相应的值,就像普通字典一样。
从:

计数器是用于计算可散列对象的dict子类。这是一个 无序集合,其中元素存储为字典键和 它们的计数存储为字典值

您可以使用以下代码:

>>> category = Counter({'a': 8508, 'c': 345, 'w': 60})
>>> category.keys() 
dict_keys(['a', 'c', 'w'])
>>> for key, value in category.items():
...     print(key, value)
... 
a 8508
c 345
w 60
然而

这是非常有用的。引用我链接的文档:

从列表中返回n个最常见元素及其计数 最常见到最不常见。如果未指定n,则most_common()返回 柜台里的所有东西。计数相等的元素是有序的 武断地

(增加重点)


print
调用
计数器
类的
\uuuu str\uuuu
方法,因此您需要重写该方法以获得打印操作的输出

from collections import Counter
class MyCounter(Counter):
    def __str__(self):
        return "\n".join('{} {}'.format(k, v) for k, v in self.items())
演示:

>>> c = MyCounter({'a': 8508, 'c': 345, 'w': 60})
>>> print c
a 8508
c 345
w 60

如果你不在乎在开头和结尾有括号,另一个选项是使用。它为您按字母顺序排列计数器

import pprint
from collections import Counter

category = Counter({'a': 8508, 'c': 345, 'w': 60})
pprint.pprint(dict(category),width=1)
输出:

{'a': 8508,
 'c': 345,
 'w': 60}

您想让输出按字母键排序还是按值降序排序?对不起,我应该在问题中提到这一点,但答案已经包括排序和未排序两种方式。我希望根据这些值按降序显示结果。
{'a': 8508,
 'c': 345,
 'w': 60}