如何将字符串转换为字典或列表?

7 python string dictionary list python-2.7

我有如下字符串:

'[1, 2, 3]'

"{'a': 1, 'b': 2}"

如何将它们转换为list/dict?

有人提到ast.literal_eval或者eval可以解析转换为list/dict的字符串.

ast.literal_eval和之间有什么区别eval

jwi*_*ner 8

ast.literal_eval解析抽象语法树.' 你几乎有json,你可以使用json.loads,但你需要双引号,而不是单引号,使字典键有效.

import ast

result = ast.literal_eval("{'a': 1, 'b': 2}")
assert type(result) is dict

result = ast.literal_eval("[1, 2, 3]")
assert type(result) is list
Run Code Online (Sandbox Code Playgroud)

作为一个优点,这没有任何风险eval,因为它没有进入评估功能的业务.eval("subprocess.call(['sudo', 'rm', '-rf', '/'])")可以删除您的根目录,但ast.literal_eval("subprocess.call(['sudo', 'rm', '-rf', '/'])")可以预测,文件系统完好无损.


小智 7

使用评估函数:

l = eval('[1, 2, 3]')

d = eval("{'a':1, 'b': 2}")
Run Code Online (Sandbox Code Playgroud)

只需确保您知道这些字符串来自何处,并且不允许评估用户输入并执行恶意操作。