python - 我试图从文本文件中获取列表的平均值
问题描述
这是查看文本文件图像的链接 我需要功能一的帮助,单击此处查看图像由于某种原因,当我打印出列表的平均值时,它只显示文本文件中的数字。我不知道我的错误在哪里。我认为问题可能出在添加列表时。
f = open("votes.txt")
lines = f.read().split('\n')
issueA = {}
voteAa = {}
voteBa = {}
while(True):
for line in lines:
col = line.split(' ')
issue = col[0]
voteA = float(col[1])
voteB = float(col[2])
if voteA in voteAa:
voteAa[issue].append(voteA)
else:
voteAa[issue] = [voteA]
if voteB in voteBa:
voteBa[issue].append(voteB)
else:
voteBa[issue] = [voteB]
choice = int(input("Which choice? "))
if choice == 1:
for issue in voteAa:
sumVote = sum(voteAa[issue])
avg = sumVote / len(voteAa[issue])
print("avg is ",sumVote)
解决方案
由于您需要按问题平均删除for issue
循环并在一行中使用特殊的平均函数计算平均值,如下所示
avg = mean(voteAa.values())
或者,如果您更愿意将其靠近您的代码
sumVote = sum(voteAa.values())
avg = sumVote / len(voteAa)
还将打印行更正为
print("avg is ", avg)
此外,您应该只收集第一个循环中不需要的选票。
所以生成的脚本是
f = open("votes.txt")
lines = f.read().split('\n')
issueA = {}
voteAa = {}
voteBa = {}
for line in lines:
col = line.split()
issue = col[0]
voteA = float(col[1])
voteB = float(col[2])
voteAa[issue] = voteA
sumVote = sum(voteAa.values())
avg = sumVote / len(voteAa)
print("avg is ", avg)
我试图保持接近你的原始代码,并没有说用数组替换字典,如果你愿意,它可以进一步简化,比如用熊猫甚至标准https://docs.python.org/3/library/csv .html
推荐阅读
- c++11 - 从 .txt 文件中读取并循环直到换行
- spring - Spring Boot 2 OAuth2 资源服务器不访问授权服务器进行访问令牌验证
- html - 如何在 CSS 和 HTML 上排列文本的顺序
- android - 安装两个版本的 apk(具有不同的 applicationId)
- javascript - 如何检测 html 中的非官方标签?
- css - Gulp 生成空的 css 文件(将 sass 编译为 css)
- javascript - 如何验证firebase用户当前密码
- python - Python追加到ndarray
- android - 码头工人。构建 NDK 项目。检测到的Ninja()版本低于CMake要求的Ninja版本(1.3)
- node.js - 尝试通过 API 访问 JSON 数据