在 Python 中可以使用 collections 内置模块下的 Counter 来实现简单的统计功能
统计列表中的元素
1 | import collections |
执行结果为:
1 | ['f', 'f', 'b', 'e', 'e', 'c', 'd', 'f', 'b', 'f', 'c', 'd', 'c', 'f', 'e', 'c', 'e', 'f', 'e', 'e'] |
统计文件中单词出现的频率
1 | import collections |
执行结果为:
1 | Counter({'the': 93, 'to': 39, 'and': 32, 'for': 31, 'SSL': 29, 'is': 26, 'a': 21, 'of': 21, 'private': 20, 'in': 18, 'you': 17, 'server': 17, 'file': 16, 'apache2': 16, 'be': 16, '1': 16, 'etc': 15, 'certificate': 15, 'this': 14, 'as': 13, 'This': 13, '0': 13, 'or': 13, 'use': 12, 'client': 10, 'that': 10, 'when': 10, 'can': 10, 'are': 9, 'mod_ssl': 9, 'ciphers': 9, 'CA': 8, 'on': 8, 'one': 8, '2': 8, 'an': 7, 'crt': 7, 'standard': 7, 'TLS': 7, 'The': 7, 'directives': 7, 'ssl': 7, 'Use': 7, 'only': 7, 'o': 7, 'shutdown': 7, 'dev': 7, 'all': 6, 'more': 6, 'close': 6, 'used': 6, 'not': 6, 'which': 6, 'notify': 6, 'key': 6, 'default': 6, 'certificates': 6, 'alert': 6, 'var': 6, 'also': 6, 'should': 5, 'OpenSSL': 5, 'SSLv3': 5, 'PEM': 5, 'encoded': 5, 'clients': 5, 'random': 5, 'OCSP': 5, 'containing': 5, 'with': 5, 'connection': 5, 'from': 5, 'SSLCertificateFile': 5, 'user': 5, 'both': 5, 'parallel': 4, 'variables': 4, 'usually': 4, 'at': 4, 'Note': 4, 'HIGH': 4, 'configured': 4, |
以上方法在读取文件的时候, 采用了读取全部内容到内存的方法, 如果文件体积较大, 会对内存造成较大压力, 可以通过如下这种迭代的用法实现相同的功能
1 | import collections |
执行结果与上面相同
统计后找出前三个元素
在 counter 对象中, 还有一个功能可以帮我们取出指定的元素
1 | import collections |
执行结果为:
1 | [('the', 93), ('to', 39), ('and', 32)] |