在Python中创建和使用文件中的变量

时间:2013-10-16 11:58:24

标签: python

我有点厌倦了用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 个答案:

答案 0 :(得分: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'])

因此仅显示无线电的值

答案 1 :(得分:1)

到目前为止看起来不错。应用.split()后,您需要使用int将列表元素转换为values = [ int(x) for x in t ],然后您可以使用sum(values)对元素求和,并除以列表使用len(values)

编辑:

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

答案 2 :(得分: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)

答案 3 :(得分: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())