首页 文章

查找列表中的数字频率

提问于
浏览
0
from collections import Counter
f = open('input.txt')
lines = f.readlines()
counter = 0
freq = []
for line in lines:
    conv_int = int(line)
    counter = counter + conv_int
    freq.append(counter)
for i in freq:
    print(Counter(freq))
print(counter)

此代码循环遍历带有各种负数和正数的文本文件,并从零开始将它们一起添加 . 但是我想知道如何查找此文件中每个数字出现的次数?

2 回答

  • 0

    Collection's Counter期望迭代作为参数而不是项目:

    import collections
    
    with open('input.txt', 'r') as input_file:
        numbers = [int(line) for line in input_file]
        numbers_sum = sum(numbers)
        numbers_frequency = collections.Counter(numbers)
    

    但是,如果效率对您来说不是问题,并且您只是尝试 sum 文件中的所有数字并且 count 它们的频率,您不需要导入库只是为了这样做:

    with open('input.txt', 'r') as input_file:
        numbers = [int(line) for line in input_file]
        numbers_sum = sum(numbers)
        numbers_frequency = {n: numbers.count(n) for n in set(numbers)}
    
  • 1

    你的文件在每一行都有一个整数,你想要每个整数的总和和频率,对吧?试试这个 .

    from collections import Counter
    with open("input.txt", "rt") as f:
        total = 0
        count = Counter()
        for line in f:
            conv_int = int(line)
            total += conv_int
            count[conv_int] += 1
        print(count)
        print(total)
    

相关问题