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

Python如何将写入文件的列表嵌套字典恢复为原字典数据类型?

问题原因

你直接将Python对象通过str()转换为字符串写入文件,这类字符串仅保留了人类可读的展示格式,没有保留数据结构的类型信息,读取后只能得到普通字符串,无法直接作为列表/字典操作。

解决方案

方案1:使用ast.literal_eval解析现有文件内容

该方法可以直接把符合Python字面量格式的字符串转换为对应的数据结构,不需要修改你之前的写入逻辑,适合已经生成了大量文本文件的场景。

修复后的读取代码:

import ast

linhas = []
with open('listfile.txt', 'r') as f:
    for line in f:
        # 去掉换行符后直接解析为Python对象
        current_place = ast.literal_eval(line.strip())
        linhas.append(current_place)

# 现在可以正常访问嵌套结构
print(linhas[0][0]['telefone']) # 输出 6298855663311
print(linhas[1][0]) # 输出 {}

注意:不要用eval()做转换,eval()会执行字符串内的任意代码,存在严重安全风险;ast.literal_eval只会解析Python基础类型的字面量,安全可控

方案2:使用JSON序列化(通用标准方案)

如果是新开发的功能,更推荐用标准JSON格式做数据持久化,写入读取逻辑规范,还支持跨语言使用。

写入代码:

import json

with open('listfile.json', 'w', encoding='utf-8') as f:
    json.dump(assentosMatriz2D, f, ensure_ascii=False, indent=2)

读取代码:

import json

with open('listfile.json', 'r', encoding='utf-8') as f:
    linhas = json.load(f)

# 直接访问结构即可
print(linhas[2][2]['pagamento']) # 输出 Boleto

内容的提问来源于stack exchange,提问作者Joao Victor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:54:01