0

我对我在 Python 中做的一个练习感到困惑。我有一个包含几行的文件,每一行都有一个名称和值。在本练习中,我需要计算所述值的平均值。我遇到的问题是创建可行的变量,仅为名称分离和创建列表或字符串,对于值也是如此。

一旦完成,我认为只需将值列表中的值的总和除以名称的 len 即可。

到目前为止,我只得到了:

f = open("shopping.txt", "r")

for i in f:

    t = i.split()

    print t

我得到了这个输出:

['TV', '300']
['Radio', '20']
['computer', '500']
['Smartphone', '400']

有什么建议吗?

4

4 回答 4

1
cart = {}
combined = 0
with open('shopping.txt', 'r') as fh:
    for line in fh:
        if len(line) <= 0 or not '=' in line: continue

        key, val = line.split('=',1)
        cart[key] = int(val)
        combined += int(val)

上面的代码将让您知道一个操作循环中的联合值,而不是稍后汇总,它还可以让您处理切菜车中的各个项目,如下所示:

print(cart['Radio'])

因此只显示收音机的价值

于 2013-10-16T12:05:08.733 回答
1

到目前为止看起来不错。应用后.split(),您需要将列表的元素转换为intusing values = [ int(x) for x in t ],然后您可以将元素相加 usingsum(values)并除以列表的长度 using len(values)

编辑:

在您的编辑之后,我建议只使用每行中的第二个值:t[1],将它们相加:sum = 0最初,即在循环之前,然后在循环中:sum += t[1],然后在循环之后将该总和除以使用的行数(所以您应该使用相同的技术计算行数,即count = 0最初然后count += 1在每个循环迭代中。

于 2013-10-16T12:05:26.153 回答
0

假设您的文件具有以下格式:

#file
name1 value1
name2 value2
...
namen value2

您可以通过这种方式计算平均值

with open('/path/to/file', 'r') as f:
    values = [int(line.strip().split()[1]) for line in f]

print 'mean:', float(sum(values)) / len(values)
于 2013-10-16T12:04:46.510 回答
0

这个怎么样?

with open("shopping.txt") as file: # same as 'file = open("shopping.txt")'
        data = file.read().splitlines()
        shopping = {k:int(v) for k, v in [line.split("=") for line in data]}
        file.close()
print shopping

编辑 要找到总和:

print sum(shopping.values())
于 2013-10-16T12:39:17.057 回答