我有以下字典:
{'expert_interests': "['Machine learning', 'deep learning']"}
正如你所看到的,键“expert_interests”的值是字符串“['Machine learning','deep learning']"。
我想把这个字符串值转换成一个嵌套的字典,这样字典看起来就像这样:
{'expert_interests': [
{
"title": "Machine learning"
},
{
"title": "deep learning"
}
]
}
我不知道如何处理这个问题。任何帮助都是高度赞赏的
2条答案
按热度按时间jq6vz3qz1#
最好的选择是使用
ast.literal_eval
。这个函数类似于eval
,除了它只计算字面量,所以它更安全。从文档(上面链接)中,
它没有命名空间,没有名称查找,也没有调用的能力。但它并不是没有攻击:相对较小的输入可能导致内存耗尽或C堆栈耗尽,导致进程崩溃。在某些输入上也可能出现CPU消耗过多的拒绝服务。因此不建议在不受信任的数据上调用它。
另一种选择是使用
json.loads
将其转换为字符串列表,然后将每个字符串都作为字典。唯一的问题是,它盲目地用
"
替换'
(因为JSON标准只对字符串使用"
),如果字符串中的任何地方都有"
或\'
,这可能会导致错误,但这比eval
好,因为eval
is dangerous特别是当你不能信任源时。zlhcx6iw2#
您可以使用
ast.literal_eval
将值转换为字符串列表,并使用列表解析从它创建dicts列表。