前言:

计数统计,简单的说就是统计某一项出现的次数。实际应用中很多需求都需要用到这个模型,如检测样本中某一值出现的次数、日志分析某一消息出现的频率、分析文件中相同字符串出现的概率等等。以下是实现的不同方式。

实现方式:

  • 使用dict
 >>> data = ['a','',2,4,5,'','b',4,7,'a',5,'d','a','z']
>>> count_1 = dict()
>>> for item in data:
... if item in count_1:
... count_1[item] +=1
... else:
... count_1[item] = 1
...
>>> print count_1
{'a': 3, 2: 1, 'b': 1, 4: 2, 5: 2, 7: 1, '': 2, 'z': 1, 'd': 1}
  • 使用set和list
 >>> data
['a', '', 2, 4, 5, '', 'b', 4, 7, 'a', 5, 'd', 'a', 'z']
>>> count_set = set(data)
>>> count_list = []
>>> for item in count_set:
... count_list.append({item:data.count(item)})
...
>>> print count_list
[{'a': 3}, {2: 1}, {'b': 1}, {4: 2}, {5: 2}, {7: 1}, {'': 2}, {'z': 1}, {'d': 1}]
  • 使用collections.Counter
 >>> data
['a', '', 2, 4, 5, '', 'b', 4, 7, 'a', 5, 'd', 'a', 'z']
>>> from collections import Counter
>>> print Counter(data)
Counter({'a': 3, 4: 2, 5: 2, '': 2, 2: 1, 'b': 1, 7: 1, 'z': 1, 'd': 1})
>>>
>>> list(Counter(data).elements()) #使用elements()方法获取Counter中的key值
['a', 'a', 'a', 2, 'b', 4, 4, 5, 5, 7, '', '', 'z', 'd']
>>>
>>> Counter(data).most_common(2) #使用most_common()方法可以找出前N个出现频率最高的元素以及它们对应的次数
[('a', 3), (4, 2)]
>>>
>>> (Counter(data))['y'] #当访问不存在的元素时,默认返回为0而不是抛出KeyError异常
0

Counter其他方法:

 >>> c=Counter("success")
>>> print c
Counter({'s': 3, 'c': 2, 'e': 1, 'u': 1})
>>>
>>> c.update("successful") #update()方法用于被统计对象元素的更新,原有Counter计数器对象与新增元素的统计计数值相加
>>> print c
Counter({'s': 6, 'c': 4, 'u': 3, 'e': 2, 'f': 1, 'l': 1})
>>>
>>> c.subtract("successful") #subtract()方法用于实现计数器对象中元素统计值相减,输入和输出的统计值允许为0或者负数
>>> print c
Counter({'s': 3, 'c': 2, 'e': 1, 'u': 1, 'f': 0, 'l': 0})

python之计数统计的更多相关文章

  1. python的计数引用分析(一)

    python的垃圾回收采用的是引用计数机制为主和分代回收机制为辅的结合机制,当对象的引用计数变为0时,对象将被销毁,除了解释器默认创建的对象外.(默认对象的引用计数永远不会变成0) 所有的计数引用+1 ...

  2. Python获得百度统计API的数据并发送邮件

    Python获得百度统计API的数据并发送邮件 小工具  本来这么晚是不准备写博客的,当是想到了那个狗子绝对会在开学的时候跟我逼逼这个事情,所以,还是老老实实地写一下吧.   Baidu统计API的使 ...

  3. python编写文件统计脚本

    python编写文件统计脚本 思路:用os模块中的一些函数(os.listdir().os.path.isdir().os.path.join().os.path.abspath()等) 实现功能:显 ...

  4. Python实现代码统计工具——终极加速篇

    Python实现代码统计工具--终极加速篇 声明 本文对于先前系列文章中实现的C/Python代码统计工具(CPLineCounter),通过C扩展接口重写核心算法加以优化,并与网上常见的统计工具做对 ...

  5. 使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

  6. Python 练习题:统计系统剩余内存

    #!/usr/bin/env python #-*- coding:utf-8 -*- ''' 统计系统内存信息 ''' with open('/proc/meminfo') as fd: for l ...

  7. python中如何统计一个类的实例化对象

    类中的静态变量 需要通过类名.静态变量名 来修改 :通过对象不能修改 python中如何统计一个类的实例化对象?? class Person: #静态变量count,用于记录类被实例化的次数 coun ...

  8. 使用Counter进行计数统计

    使用Counter进行计数统计 想必大家对计数统计都不陌生吧!,简单的说就是统计某一项出现的次数.实际应用中很多需求都需要用到这个模型,如检测样本中某一值出现的次数.日志分析某一消息出现的频率分析文件 ...

  9. python字典作为统计记录工具

    1.python 利用字典作为计数项,统计指定项的个数 #!/usr/bin/python ta={} key = "test" if not key in ta:     ta[ ...

随机推荐

  1. 44444444444444444444444444444444dddddddddd66666666666666666666666666

    dddddddddddddddddddddddddddddddddddddddddddddddddddd

  2. 搭建网络svn实战

    工作中的问题(7) 转自:http://blog.csdn.net/xiaoting451292510/article/details/8562570 经常性我们和朋友写一些程序,大家在不同的城市确有 ...

  3. 学习MarkDown--初体验

    学习MarkDownPad 突然兴趣来了,在博客园里面也有Markdown的格式,昨天晚上安装了MarkDownPad pro这个是免费的,但是有些功能不支持.本来想破解的,百度了很多方法感觉不靠谱, ...

  4. 利用wxpython编写GUI

    首先建立一个简单的布局合理的图形界面,但是其中按下按键没有事情发生 #encoding=utf-8 __author__ = 'heng' #编写一个GUI import wx app = wx.Ap ...

  5. oracle官方文档_查看初始化參数(举例)

    原创作品,出自 "深蓝的blog" 博客.深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46864217 记录 ...

  6. MongoDB 操作手冊CRUD 更新 update

    改动记录 概述 MongoDB提供了update()方法用于更新记录. 这种方法接受下面參数:     一个更新条件的JSON对象用于匹配记录,一个更新操作JSON对象用于声明更新操作,和一个选项JS ...

  7. 追踪分布式Memcached默认的一致性hash算法

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  8. [IT学习]Learn Python the Hard Way (Using Python 3)笨办法学Python3版本

    黑客余弦先生在知道创宇的知道创宇研发技能表v3.1中提到了入门Python的一本好书<Learn Python the Hard Way(英文版链接)>.其中的代码全部是2.7版本. 如果 ...

  9. arcgis 发布地图服务

    arcgis中,地图文档需要发布,才能为WEB所用. 咋发布呢? 1.在arcmap里面,点击 文件 - 共享为 - 服务 2.在弹出的对话框里选"发布服务",然后 3.这里面有点 ...

  10. method.invoke()使用

    public Object invoke(Object obj, Object... args) throws IllegalAccessException, IllegalArgumentExcep ...