【发布时间】:2022-01-14 18:32:31
【问题描述】:
我是一名初级程序员,这是我在这个网站上的第一篇文章。 我试图将值附加到字典中的现有键,但我不断收到属性错误。我已经尝试将值附加到另一个项目的现有密钥中,并且效果很好。所以我几乎处于死胡同。 如果你们能指出我的错误并帮助我修复我的代码,我将不胜感激。
编辑::
我想在几个答案之后,我需要更好地解释我的情况以及我要实现的目标。
我的情况是,当我进行实验时,我需要从其中提取数据的大约一百个文件(我将在下面的链接中提供其中一些)。
我试图实现的是从文件夹中的文件中提取所有数据并将其放入一个类似 .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 轴上都将具有相同的值。
文件链接: Share files
我的代码:
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()
【问题讨论】:
-
字符串不能附加..只能列出..
-
main_dict[count]=n应该是main_dict[count]=[n] -
我建议你使用
collections.defaultdict()或者maindict.setdefault()这样你就不需要自己去检查key是否存在了。 -
main_dict.setdefault(count, []).append(n)
标签: python python-3.x dictionary attributes attributeerror