如何反序列化python打印字典?

jpe*_*lli 2 python dictionary deserialization

我在数据库中将python的str字典表示为varchars,我想检索原始的python字典

如何根据词典的str表示重新获得字典?

>>> dic = {u'key-a':u'val-a', "key-b":"val-b"}
>>> dicstr = str(dic)
>>> dicstr
"{'key-b': 'val-b', u'key-a': u'val-a'}"
Run Code Online (Sandbox Code Playgroud)

在该示例中,将dicstr转换为可用的python字典.

Ash*_*ary 12

使用ast.literal_eval()和对于这种情况喜欢repr()str(),因为str()不保证该字符串可转换回有用的对象.

In [7]: import ast

In [10]: dic = {u'key-a':u'val-a', "key-b":"val-b"}

In [11]: strs = repr(dic)

In [12]: strs
Out[12]: "{'key-b': 'val-b', u'key-a': u'val-a'}"

In [13]: ast.literal_eval(strs)
Out[13]: {u'key-a': u'val-a', 'key-b': 'val-b'}
Run Code Online (Sandbox Code Playgroud)