如何计算文本fi中给定数字的频率

2024-10-03 15:32:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如何计算文本文件中给定数字的频率。文本文件如下。在

     0
     2
     0
     1
     0
     1
     55
     100
     100

我希望输出如下

^{pr2}$

我试了一下但没有成功

     def histogram( A, flAsList=False ):
         """Return histogram of values in array A."""
         H = {}
         for val in A:
             H[val] = H.get(val,0) + 1
         if flAsList:
             return H.items()
         return H

有更好的办法吗。提前谢谢!在


Tags: ofinfalsereturndef数字valarray
3条回答

使用Counter。这是解决这类问题的最佳方法

from collections import Counter
with open('file.txt', 'r') as fd:
    lines = fd.read().split()
    counter = Counter(lines)
    # sorts items
    items = sorted(counter.items(), key=lambda x: int(x[0]))
    # prints desired output
    for k, repetitions in items:
        print k,'\t', repetitions

输出:

^{pr2}$

为此使用^{}对象:

from collections import Counter
c = Counter(A)

现在,c变量将保存每个值的频率映射。例如:

^{pr2}$

请考虑使用更新

def histogram( A, flAsList=False ):
 """Return histogram of values in array A."""
 H = {}
 for val in A:
     # H[val] = H.get(val,0) + 1
     if H.has_key(val):
        H[val] = H[val] + 1
     else:
        H.update({val : 1})
 if flAsList:
     return H.items()
 return H

相关问题 更多 >