首页 > 解决方案 > 我试图从文本文件中获取列表的平均值

问题描述

这是查看文本文件图像的链接 我需要功能一的帮助,单击此处查看图像由于某种原因,当我打印出列表的平均值时,它只显示文本文件中的数字。我不知道我的错误在哪里。我认为问题可能出在添加列表时。

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)

标签: pythonlist

解决方案


由于您需要按问题平均删除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


推荐阅读