如何将含数组的Python字典按指定格式写入TXT文件?
解决方案
首先注意不要用dict作为变量名(会覆盖Python内置类型),下面是两种适配需求的实现方式:
基础实现(匹配分隔格式)
如果只需要用,分隔列,不需要严格对齐空格,用以下代码:
import numpy as np # 定义数据(替换成你的字典) data_dict = {'a': np.array([1,2,3]), 'b': np.array([10,11,12]), 'c': np.array([20,21,22])} # 提取表头和数据列 headers = list(data_dict.keys()) columns = list(data_dict.values()) # 写入文件 with open('output.txt', 'w') as f: # 写入表头 f.write(' , '.join(headers) + '\n') # 按行打包各列数据并写入 for row in zip(*columns): f.write(' , '.join(map(str, row)) + '\n')
严格对齐格式(匹配示例空格)
如果需要和示例完全一致的空格对齐(比如b后带两个空格),可以用格式化字符串控制列宽:
import numpy as np data_dict = {'a': np.array([1,2,3]), 'b': np.array([10,11,12]), 'c': np.array([20,21,22])} headers = list(data_dict.keys()) columns = list(data_dict.values()) # 定义每列的显示宽度(按需调整) col_widths = [2, 3, 2] with open('output.txt', 'w') as f: # 格式化表头,保证对齐 header_line = ''.join(f"{header:<{width}}," for header, width in zip(headers, col_widths)).rstrip(',') + '\n' f.write(header_line) # 格式化每行数据 for row in zip(*columns): row_line = ''.join(f"{val:<{width}}," for val, width in zip(row, col_widths)).rstrip(',') + '\n' f.write(row_line)
关键说明
zip(*columns)是核心:它会把多个数组的对应位置元素打包成元组,比如第一行是(1, 10, 20),完美匹配你需要的行结构。- 之前用JSON失败的原因:JSON不支持numpy数组(需先转列表),且输出格式是键值对,和表格结构不符。
- 单纯for循环的坑:如果直接遍历每个键逐行写,会变成先输出
a的所有数据,再输出b的,和需求的列组合结构不一致。
内容的提问来源于stack exchange,提问作者Kenneth Su
相关产品推荐
相关产品推荐

