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


当前回答

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

其他回答

将字典转换为JSON(字符串)

import json 

mydict = { "name" : "Don", 
          "surname" : "Mandol", 
          "age" : 43} 

result = json.dumps(mydict)

print(result[0:20])

会让你:

{"name": "Don", "sur .

将字符串转换为字典

back_to_mydict = json.loads(result) 

为什么不使用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.dumps()方法需要帮助来处理某些对象类型。

这篇文章的答案如下:

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

使用pickle模块将其保存到磁盘并稍后加载。

如果你关心速度,可以使用ujson (UltraJSON),它有和json相同的API:

import ujson
ujson.dumps([{"key": "value"}, 81, True])
# '[{"key":"value"},81,true]'
ujson.loads("""[{"key": "value"}, 81, true]""")
# [{u'key': u'value'}, 81, True]