我正在编写一个程序,将数据存储在字典对象中,但此数据需要在程序执行期间的某个点保存,并在程序再次运行时加载回字典对象。 如何将字典对象转换为可以写入文件并加载回字典对象的字符串?这将有望支持包含字典的字典。
当前回答
我使用yaml,如果需要可读(既不是JSON也不是XML, IMHO),或者如果阅读是不必要的,我使用pickle。
写
from pickle import dumps, loads
x = dict(a=1, b=2)
y = dict(c = x, z=3)
res = dumps(y)
open('/var/tmp/dump.txt', 'w').write(res)
读回
from pickle import dumps, loads
rev = loads(open('/var/tmp/dump.txt').read())
print rev
其他回答
使用pickle模块将其保存到磁盘并稍后加载。
为什么不使用Python 3的内置ast库的函数literal_eval。最好使用literal_eval而不是eval
import ast
str_of_dict = "{'key1': 'key1value', 'key2': 'key2value'}"
ast.literal_eval(str_of_dict)
将输出作为实际的字典
{'key1': 'key1value', 'key2': 'key2value'}
如果你要求将字典转换为字符串,那么如何使用Python的str()方法。
假设字典是:
my_dict = {'key1': 'key1value', 'key2': 'key2value'}
这将是这样做的:
str(my_dict)
将打印:
"{'key1': 'key1value', 'key2': 'key2value'}"
这是你喜欢的最简单的事。
我使用json:
import json
# convert to string
input_ = json.dumps({'id': id_ })
# load to dict
my_dict = json.loads(input_)
json模块是一个很好的解决方案。与pickle相比,它的优点是只生成纯文本输出,并且是跨平台和跨版本的。
import json
json.dumps(dict)
您可能会发现json.dumps()方法需要帮助来处理某些对象类型。
这篇文章的答案如下:
import json
json.dumps(my_dictionary, indent=4, sort_keys=True, default=str)
推荐文章
- 试图在Windows 10上运行Python时出现“权限被拒绝”
- 如何在Django中设置时区
- Swift:声明一个空字典
- 即使模板文件存在,Flask也会引发TemplateNotFound错误
- 将JSON字符串转换为HashMap
- 将JsonNode转换为POJO
- defaultdict的嵌套defaultdict
- 构造tkinter应用程序的最佳方法?
- 如何在Python中逐行打印字典?
- 当试图运行Python脚本时,“ImportError:没有命名模块”
- pylab和pyplot的区别是什么?
- Json_encode()转义正斜杠
- Argparse:确定使用了哪个子解析器
- django导入错误-没有core.management模块
- 在芹菜中检索队列中的任务列表