Python 将类似字典的输入转换为字典

Python 将类似字典的输入转换为字典,python,Python,如何将字典输入转换为可以处理的真实字典 当我执行一个外部命令时,这就是我得到的 {'aaa': {'test_a': 0.11666666666667, 'test_b': 1, 'total_c': 0.11666666666667}, 'bbb': {'test_a': 32.883333333332999, 'test_b': 1, 'total_c': 0.11666666666667}, 'ccc': {'te

如何将字典输入转换为可以处理的真实字典

当我执行一个外部命令时,这就是我得到的

{'aaa': {'test_a': 0.11666666666667,
         'test_b': 1,
         'total_c': 0.11666666666667},
 'bbb': {'test_a': 32.883333333332999,
         'test_b': 1,
         'total_c': 0.11666666666667},
 'ccc': {'test_a': 11, 'test_b': 31, 'test'_c': 33}}
因此,正如您所看到的,上面已经是一个字典格式了。我只是想做一些类似的事情

 #!/usr/bin/python

 import command
 result = commands.getoutput('<execute_external_command')
#/usr/bin/python
导入命令

result=commands.getoutput('这是一个API吗?正如拉夫顿的回答所指出的,这可能是JSON,它在技术上与Python字典不同,如果使用eval,可能会给您带来麻烦(例如,它使用小写的
true
false
,而Python使用大写字母)因此,最好的解决方案是拉夫顿文档是一个很好的阅读工具。
eval
将“给您带来麻烦”无论如何,这是一个明显的安全漏洞。请使用
ast.literal\u eval
。这是API提供的吗?正如拉夫顿的回答所指出的,这可能是JSON,从技术上讲,JSON与Python字典不同,如果在其上使用eval,可能会给您带来麻烦(例如,它使用小写的
true
false
,而Python使用大写)。因此,最好的解决方案是拉夫顿文档非常值得阅读。
eval
无论如何都会“给你惹麻烦”。这是一个明显的安全漏洞。使用
ast.literal\u eval
>>> ast.literal_eval("""{'aaa': {'test_a': 0.11666666666667,
...          'test_b': 1,
...          'total_c': 0.11666666666667},
...  'bbb': {'test_a': 32.883333333332999,
...          'test_b': 1,
...          'total_c': 0.11666666666667},
...  'ccc': {'test_a': 11, 'test_b': 31, 'test_c': 33}}""")
{'aaa': {'total_c': 0.11666666666667, 'test_b': 1, 'test_a': 0.11666666666667}, 'bbb': {'total_c': 0.11666666666667, 'test_b': 1, 'test_a': 32.883333333333}, 'ccc': {'test_c': 33, 'test_b': 31, 'test_a': 11}}
from simplejson import loads
result='{"name":"Anton"}'
dictionary=loads(result)
print dictionary

result="{'name':'Anton'}"
dictionary=loads(result.replace("'",'"'))
print dictionary