You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含数组的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:05:10