如何将弦乐词典转换为Python词典?

Thi*_*Lam 6 python

我有以下字符串,它是一个字典串化的Python字典:

some_string = '{123: False, 456: True, 789: False}'
Run Code Online (Sandbox Code Playgroud)

如何从上面的字符串中获取Python字典?

Mar*_*ers 11

用途ast.literal_eval:

安全地评估表达式节点或包含Python表达式的字符串.提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None.

这可以用于安全地评估包含来自不可信来源的Python表达式的字符串,而无需自己解析值.

例:

>>> some_string = '{123: False, 456: True, 789: False}'
>>> import ast
>>> ast.literal_eval(some_string)
{456: True, 123: False, 789: False}
Run Code Online (Sandbox Code Playgroud)


Joe*_*erg 9

好吧,你可以做到

d = eval(some_string)
Run Code Online (Sandbox Code Playgroud)

但是如果字符串包含用户输入,那么这是一个坏主意,因为一些随机恶意函数可能在表达式中.有关列表反序列化,请参阅Python"eval"的安全性

所以更安全的替代方案可能是:

import ast
d = ast.literal_eval(some_string)
Run Code Online (Sandbox Code Playgroud)

来自http://docs.python.org/library/ast.html#ast.literal_eval:

提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None.