格式化计数器的输出

 随洋恒黯的天使 发布于 2023-02-13 15:37

我使用Counter来计算列表项的出现次数.我很难很好地展示它.对于以下代码,

category = Counter(category_list)
print category

以下是输出,

Counter({'a': 8508, 'c': 345, 'w': 60})

我必须如下显示上述结果,

a 8508
c 345
w 60

我试图迭代计数器对象,但我没有成功.有没有办法很好地打印Counter操作的输出?

2 个回答
  • Counter本质上是一个字典,因此它有键和相应的值 - 就像普通字典一样.从文档:

    Counter是用于计算可哈希对象的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
    

    但是,您不应该依赖字典中的键顺序.

    Counter.most_common非常有用.引用我链接的文档:

    返回n个最常见元素及其计数的列表,从最常见到最少.如果未指定n,则most_common()返回计数器中的所有元素.具有相同计数的元素是任意排序的.

    (重点补充)

    >>> category.most_common() 
    [('a', 8508), ('c', 345), ('w', 60)]
    >>> for value, count in category.most_common():
    ...     print(value, count)
    ...
    a 8508
    c 345
    w 60
    

    2023-02-13 15:38 回答
  • print调用类的__str__方法Counter,所以你需要覆盖它以获得打印操作的输出.

    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
    

    2023-02-13 15:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有