Python中是否有类似R语言dput的函数?如何复现指定字典?
Python 中类似 R 语言 dput 的功能及字典复现方法
R 的 dput() 用于输出对象的可复现代码,Python 里没有同名函数,但有几个等价方案可以实现相同效果:
1. 生成可复现的对象代码
使用 repr()
repr() 会返回对象的官方字符串表示,这个字符串可以直接作为 Python 代码运行还原原对象,是最接近 dput() 的功能:
my_dict = {1: {'Geeks': [[1, 'N', None]], 'Geeks1': [[1, None, 'H']]}} # 输出可复现的代码字符串 print(repr(my_dict))
输出结果:
{1: {'Geeks': [[1, 'N', None]], 'Geeks1': [[1, None, 'H']]}}
直接复制这段输出,就能在其他环境中重建原字典。
使用 pprint 格式化输出(适合大字典)
如果字典包含大量键值对,pprint 模块的 pprint() 可以输出格式化后的字符串,结构更清晰易读,同时保持可复现性:
from pprint import pprint pprint(my_dict, width=1)
输出结果:
{1: {'Geeks': [[1, 'N', None]], 'Geeks1': [[1, None, 'H']]}}
2. 还原对象
拿到生成的代码字符串后,推荐用 ast.literal_eval() 来安全解析,它只处理 Python 字面量(如字典、列表、字符串等),避免了 eval() 执行恶意代码的风险:
import ast # 假设这是从输出中复制的字符串 dict_str = "{1: {'Geeks': [[1, 'N', None]], 'Geeks1': [[1, None, 'H']]}}" restored_dict = ast.literal_eval(dict_str) # 验证还原后的对象和原对象一致 print(restored_dict == my_dict) # 输出 True
内容的提问来源于stack exchange,提问作者navee pp
相关产品推荐
相关产品推荐

