我正在编写一个程序,将数据存储在字典对象中,但此数据需要在程序执行期间的某个点保存,并在程序再次运行时加载回字典对象。 如何将字典对象转换为可以写入文件并加载回字典对象的字符串?这将有望支持包含字典的字典。


当前回答

我使用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)

在中文中,你应该做以下调整:

import codecs
fout = codecs.open("xxx.json", "w", "utf-8")
dict_to_json = json.dumps({'text':"中文"},ensure_ascii=False,indent=2)
fout.write(dict_to_json + '\n')

您可能会发现json.dumps()方法需要帮助来处理某些对象类型。

这篇文章的答案如下:

import json
json.dumps(my_dictionary, indent=4, sort_keys=True, default=str)

我发现问题不在于我的dict对象,它是RubyString类型的键和值,加载后用rubymarshal 'loads'方法

所以我这样做了:

dic_items = dict.items()
new_dict = {str(key): str(value) for key, value in dic_items}

为什么不使用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'}"

这是你喜欢的最简单的事。