使用Python中的词典
我对Python或任何语言都很陌生。我想用纯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
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>), ...}