首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我尝试附加到字典时,‘'str’对象没有属性‘追加’属性错误

当我尝试附加到字典时,‘'str’对象没有属性‘追加’属性错误
EN

Stack Overflow用户
提问于 2021-12-09 23:53:12
回答 2查看 1.5K关注 0票数 0

我是一个初级程序员,这是我在这个网站上的第一篇文章。我试图将值附加到字典中现有的键中,但是我一直得到属性错误。我已经尝试将值附加到另一个项目的现有密钥中,并且它运行得很好。所以我差不多是死路一条了。如果你们能指出我的错误并帮助我修复我的代码,我会非常感激的。

编辑::

经过几个答案,我想,我需要做一个更好的解释什么是我的情况和什么我要取得的成就。

我的情况是,当我做实验时,我从需要提取数据的地方得到大约100个文件(我将在下面的链接中提供其中的几个文件)。

我试图实现的是从文件夹中的文件中提取所有数据,并将其放入一个类似于.csv风格的文件中。因此,我可以更容易地将它导入到Originlab(类似于Excel)。

我想我的代码会做这样的事情:

提取的第一个文件:

代码语言:javascript
复制
0.9761
0.9793
0.9825
0.9852
0.9850
0.9861
0.9848
0.9881

提取的第二个文件:

代码语言:javascript
复制
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轴上都有相同的值。

文件链接:共享文件

我的代码

代码语言:javascript
复制
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() 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-10 00:18:44

改变这个

代码语言:javascript
复制
for count, n in enumerate(lst[:-4]):
    if count in main_dict:
        main_dict[count].append(n)
    else:
        main_dict[count]=n

代码语言:javascript
复制
for count, n in enumerate(lst[:-4]):
    main_dict.setdefault(count, []).append(n)

如果字典中还没有dict.setdefault方法,它将将默认值设置为键(在本例中为空列表)。如果存在迭代项,则append方法将迭代项追加到相应的值列表中。

票数 0
EN

Stack Overflow用户

发布于 2021-12-09 23:59:33

代码语言:javascript
复制
main_dict[count] += n

应该给你想要的结果

不过,这将使这些值变成一个长字符串。如果您希望这些值是一个列表,您可以:

代码语言:javascript
复制
       if count in main_dict:
            main_dict[count].append(n)
        else:
             main_dict[count]= [n]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70298185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档