首页 > 解决方案 > 在列表中查找数字的频率

问题描述

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)

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

标签: python

解决方案


Collection'sCounter期望一个可迭代的参数而不是一个项目:

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)}

推荐阅读