代码之家  ›  专栏  ›  技术社区  ›  Raquel Feltrin

合并字典并为每个字典键创建txt文件

  •  1
  • Raquel Feltrin  · 技术社区  · 4 年前

    我想合并两个字典,并为每个字典键创建一个txt文件。我的每一本字典都有100多个键,以下只是一个例子:

    dict1 = {
     '1': [3.84, 2, 4, 6, 7],
     '45': [4.9, 2, 5, 9, 9],
     '135': [6.7,2, 4, 7, 7]
    }
    
    dict2 = {
    '1': pd.DataFrame([[101,        105,        106 ],
                        [245,        134,        96  ],
                        [175,        105,        200 ]], 
                    columns=['AST_0-1'   ,'AST_10-1'   , 'AST_110-1']),
    
    '45': pd.DataFrame([[101,        105,        106 ],
                        [245,        134,        96  ],
                        [175,        105,        200 ]],
                    columns=['AST_0-45'  ,'AST_10-45'  , 'AST_110-45']),
    
    '135': pd.DataFrame([[101,      105,        106   ],
                        [245,      134,        96    ],
                        [175,      105,        200   ]],
                    columns=['AST_0-135' ,'AST_10-135' , 'AST_110-135'])
     }
    

    对于dict中的每个键,txt文件应该包含来自dict 1和dict 2的键值,如下所示(来自键“1”的值):

     3.84
     2
     4
     6
     7
    101  105  106 
    245  134  96
    175  105  200
    

    因为dict2的标题和索引必须删除,所以我尝试使用这个问题中的代码(答案1中的代码) create csv from dictionaries of dataframes and drop header 而是使用 文件名=f“{k}.csv” ,我曾经 file_name=f“{k}.txt” ,不确定这样做是否正确,但它确实创建了一个txt文件(我是python新手)。但是,最终的txt文件将dict1值作为列表。看起来是这样的:

    [3.84, 2, 4, 6, 7]
    101        105        106 
    245        134        96
    175        105        200
    

    我还尝试使用以下代码创建txt文件:

     for key, value in dict1.items():
          filename=str(key + '.txt')
          with open(filename,"w") as f:
             for v in value:
                 f.write(str(v) + "\n") 
    

    我能够创建一个txt文件,在不同的行中使用dict1的每个值(如上面的示例),但我不确定如何添加dict2,而不使用代码中的标题和索引。

    谢谢你的帮助!!

    1 回复  |  直到 4 年前
        1
  •  1
  •   j1-lee    4 年前

    用这个怎么样 print 带参数 sep file ?

    for k, v in dict1.items():
        with open(f"{k}.txt", "w") as f:
            print(*v, sep='\n', file=f)
            dict2[k].to_csv(f, sep='\t', header=False, index=False)
    

    这里是星号符号 * 是吗 unpacking operator .

    1.txt :

    3.84
    2
    4
    6
    7
    101 105 106
    245 134 96
    175 105 200