我是一个初级程序员,这是我在这个网站上的第一篇文章。我试图将值附加到字典中现有的键中,但是我一直得到属性错误。我已经尝试将值附加到另一个项目的现有密钥中,并且它运行得很好。所以我差不多是死路一条了。如果你们能指出我的错误并帮助我修复我的代码,我会非常感激的。
编辑::
经过几个答案,我想,我需要做一个更好的解释什么是我的情况和什么我要取得的成就。
我的情况是,当我做实验时,我从需要提取数据的地方得到大约100个文件(我将在下面的链接中提供其中的几个文件)。
我试图实现的是从文件夹中的文件中提取所有数据,并将其放入一个类似于.csv风格的文件中。因此,我可以更容易地将它导入到Originlab(类似于Excel)。
我想我的代码会做这样的事情:
提取的第一个文件:
0.9761
0.9793
0.9825
0.9852
0.9850
0.9861
0.9848
0.9881提取的第二个文件:
0.9761 0.9850
0.9793 0.9756
0.9825 0.9751
0.9852 0.9765
0.9850 0.9753
0.9861 0.9803
0.9848 0.9856
0.9881 0.9864等等..。
它可以用空格或逗号分隔。
我需要一个键上的多个值的原因是,这些数字是y轴的值,所有数据集在x轴上都有相同的值。
文件链接:共享文件
我的代码
import glob
import os
def main():
direct = r"C:\Users\Inzaghi\Desktop\Ondra_origin"
main_dict={}
for filename in glob.glob(os.path.join(direct, '*.spe')):
with open(filename,'r') as file:
print ('file read: ' + filename)
lst=[]
for line in file:
line = line.replace('# ','')
if len(line) == 14:
line = line.rstrip().split()
lst.append(line[1])
for count, n in enumerate(lst[:-4]):
if count in main_dict:
main_dict[count].append(n)
else:
main_dict[count]=n
with open (direct+'\celkovy_file.txt','a') as f:
for i in range(0,len(main_dict)):
f.write(main_dict[i] + '\n')
print('Done')
if __name__=='__main__':
main() 发布于 2021-12-10 00:18:44
改变这个
for count, n in enumerate(lst[:-4]):
if count in main_dict:
main_dict[count].append(n)
else:
main_dict[count]=n至
for count, n in enumerate(lst[:-4]):
main_dict.setdefault(count, []).append(n)如果字典中还没有dict.setdefault方法,它将将默认值设置为键(在本例中为空列表)。如果存在迭代项,则append方法将迭代项追加到相应的值列表中。
发布于 2021-12-09 23:59:33
main_dict[count] += n应该给你想要的结果
不过,这将使这些值变成一个长字符串。如果您希望这些值是一个列表,您可以:
if count in main_dict:
main_dict[count].append(n)
else:
main_dict[count]= [n]https://stackoverflow.com/questions/70298185
复制相似问题