使用Python中的词典

使用Python中的词典,python,Python,我对Python或任何语言都很陌生。我想用纯Python做一些事情,我的数据是: 2.0 2.0 2.0 4.0 2.0 3.0 2.1 6.0 2.1 4.0 2.1 2.0 2.2 10.0 2.2 2.5 2.2 2.5 对于第一列中的每个值(2.0、2.1、2.2),我想取第二列中的值的平均值,然后从第二列中的每个值中减去该平均值。对于上述数据,我的输出应如下所示: 2.0 2.0 -1.0 2.0 4.0 1.0 2.0 3.0 0.0 2.1 6.0 2.0 2.1 4.0

我对Python或任何语言都很陌生。我想用纯Python做一些事情,我的数据是:

2.0 2.0
2.0 4.0
2.0 3.0
2.1 6.0
2.1 4.0
2.1 2.0
2.2 10.0
2.2 2.5
2.2 2.5
对于第一列中的每个值(2.0、2.1、2.2),我想取第二列中的值的平均值,然后从第二列中的每个值中减去该平均值。对于上述数据,我的输出应如下所示:

2.0 2.0 -1.0
2.0 4.0  1.0
2.0 3.0  0.0
2.1 6.0  2.0
2.1 4.0  0.0
2.1 2.0 -2.0
2.2 10.0 5.0
2.2 2.5  -2.5
2.2 2.5  -2.5
data = {<some number> : ([<number 1>, <number 2>, <number 3>], <average>), ...}

如何在Python中实现这一点?任何帮助都将不胜感激

所以我不会给您实际的工作代码,因为您没有提供任何代码,但我会为您指出正确的方向

步骤1:读入文件:您应该使用
构造来执行此操作。这将自动处理文件的打开和关闭,并使您的代码非常可读

f = open("file.txt",'w')
#do stuff
f.close()
相当于

with open("file.txt",'w') as f:
    #do stuff
这更干净

第2步:遍历文件。打开文件后,可以开始将内容保存到内存中。最好逐行执行此操作,以避免将整个文件转储到内存中(即避免
file.readlines()
)。您可以使用
for
循环直接通过文件对象进行实际循环

with open("file.txt",'r') as f:
    for line in f:
         #perform process on each line
步骤3:保存数据。在你的过程中,你肯定想要一本字典,所以你可以通过识别它来获得分数。第一列将是键,第二列和第三列将构成值。存储数据的最简单方法可能是使用列表(
[value1,value2,value3]
),因为每次找到具有相同键的行时,它们都需要更改。执行此操作的一些伪代码可能是:

data = {} 

with open("file.txt",'w') as f:
    for line in f:
        if <first entry of line> in <list of keys in data>:
            #Add second entry of line to tuple 
        else:
            #Create new entry in data with a one entry list of the second entry
然后你可以:

data = {key, (curVal, <average value>) for key, curVal in data.items()}
为此,请研究
format()
函数以及如何从嵌套结构中提取数据。如果要将数据写回文件,可以再次将
一起使用,但将模式更改为
'w'


希望这能帮助你走上正轨,祝你好运

你试过玩python吗?:)你应该先自己试一试,如果你被卡住了,再带着问题回来。是的,我可以得到每个值的平均值,但不知道如何得到其余部分。data=numpy.genfromtxt('a.txt')@user3634155:
data=numpy.genfromtxt('a.txt')
?您的问题询问的是“纯Python”——通常意味着“没有任何外部库”
data = {<some number> : ([<number 1>, <number 2>, <number 3>], <average>), ...}