AJ0*_*200 248 python serialization dictionary
我正在编写一个将数据存储在字典对象中的程序,但是这个数据需要在程序执行期间的某个时刻保存,并在程序再次运行时加载回字典对象.如何将字典对象转换为可以写入文件并加载回字典对象的字符串?这有望支持包含词典的词典.
Tyl*_*ves 224
json模块在这里是一个很好的解决方案.它具有优于pickle的优点,它只产生纯文本输出,并且是跨平台和跨版本的.
import json
json.dumps(dict)
Run Code Online (Sandbox Code Playgroud)
Pab*_*loG 197
如果你的字典不是太大,也许str + eval可以完成这项工作:
dict1 = {'one':1, 'two':2, 'three': {'three.1': 3.1, 'three.2': 3.2 }}
str1 = str(dict1)
dict2 = eval(str1)
print dict1==dict2
Run Code Online (Sandbox Code Playgroud)
如果源不受信任,您可以使用ast.literal_eval而不是eval来获得额外的安全性.
Eya*_* Ch 155
我用json:
import json
# convert to string
input = json.dumps({'id': id })
# load to dict
my_dict = json.loads(input)
Run Code Online (Sandbox Code Playgroud)
Fig*_*ode 10
为什么不使用Python 3的内置ast库的函数literal_eval。最好使用literal_eval而不是eval
import ast
str_of_dict = "{'key1': 'key1value', 'key2': 'key2value'}"
ast.literal_eval(str_of_dict)
Run Code Online (Sandbox Code Playgroud)
将输出作为实际字典
{'key1': 'key1value', 'key2': 'key2value'}
Run Code Online (Sandbox Code Playgroud)
而且,如果您要求将Dictionary转换为String,那么如何使用Python的str()方法。
假设字典是:
my_dict = {'key1': 'key1value', 'key2': 'key2value'}
Run Code Online (Sandbox Code Playgroud)
这将像这样完成:
str(my_dict)
Run Code Online (Sandbox Code Playgroud)
将打印:
"{'key1': 'key1value', 'key2': 'key2value'}"
Run Code Online (Sandbox Code Playgroud)
这是您想要的简单操作。
将字典转换为 JSON(字符串)
import json
mydict = { "name" : "Don",
"surname" : "Mandol",
"age" : 43}
result = json.dumps(mydict)
print(result[0:20])
Run Code Online (Sandbox Code Playgroud)
会让你:
{"name": "Don", "sur
将字符串转换为字典
back_to_mydict = json.loads(result)
Run Code Online (Sandbox Code Playgroud)
小智 5
如果在中国
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')
Run Code Online (Sandbox Code Playgroud)