python - 在列表中查找数字的频率
问题描述
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)
此代码循环遍历具有各种负数和正数的文本文件,并将它们从零开始相加。但是我想知道如何找到这个文件中每个数字出现的次数?
解决方案
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)}
推荐阅读
- java - 如何使用 Hibernate JoinFormula Annotation 进行多态查询?
- c - 头文件中的“#error”语句不起作用
- python - 我想检查类别页面中的产品是否存在于购物车中,然后使用 django 和 jinja 在网页中显示添加的图标
- javascript - React Semantic UI 无法在 Modal 中提交表单
- reactjs - npm 更新失败,并且在运行 create-react-app 后,一些文件(例如 public、App.js index.js 等)没有安装
- scala - 为什么 T 是扩展类型指示符 C.this.type#T 中 this.type 的类型投影
- reactjs - 在 ReactJs 组件中处理状态的最佳实践是什么
- r - 使用另一个时间序列的增长率插值时间序列(替换 NA)
- perl - sed/awk 有条件地从文件的开头和结尾删除行
- javascript - 无法获取 Angular 材质自动完成值