如何检查字符串是否包含字典

Hak*_*hin 5 python string recursion dictionary python-3.x

我想递归地解析字典中所有带有字符串的值ast.literal_eval(value),但如果字符串不包含字典,则不执行 eval 操作。我想要这个,因为我在字典中有一个字符串,它本身就是一个字典,并且我希望该值是一个字典。最好举个例子

my_dict = {'a': 42, 'b': "my_string", 'c': "{'d': 33, 'e': 'another string'}"}
Run Code Online (Sandbox Code Playgroud)

现在我不想做,ast.literal_eval(my_dict['c'])我想要一个通用的解决方案,我可以做convert_to_dict(my_dict)

我想编写自己的方法,但我不知道如何检查字符串是否包含字典,然后 ast.literal_eval 将失败,因此出现了问题。

Hak*_*hin 1

其他答案非常好,引导我找到了正确的解决方案,但之前接受的答案有一个错误。这是我的工作解决方案:

def recursive_dict_eval(myDict):
    for key,value in myDict.items():
        try:
            if(isinstance(value, dict)):
                recursive_dict_eval(value)
            evaled_value=ast.literal_eval(value)
            assert isinstance(evaled_value,dict)
            myDict[key]=recursive_dict_eval(evaled_value)

        except (SyntaxError, ValueError, AssertionError):
            #SyntaxError, ValueError are for the literal_eval exceptions
            pass
    return myDict
Run Code Online (Sandbox Code Playgroud)