Python 对于循环,请转到简单的线

Python 对于循环,请转到简单的线,python,Python,如果我知道将有三个级别的json文件,我想匹配第三个级别的文本。我可以有如下所示的代码。但如果我不知道确切的级别数,我如何用python编写通用函数?任何帮助都将不胜感激 谢谢 值=['text1'、'text2'、'text3'] 事件_json={'text1':[{ 'othertext':{}, “文本2”:[{ 'text3':{…}, 'othertext1':{}, ....}], ...}]} def函数(): 如果事件发生: 对于event_json['text1']中的事

如果我知道将有三个级别的json文件,我想匹配第三个级别的文本。我可以有如下所示的代码。但如果我不知道确切的级别数,我如何用python编写通用函数?任何帮助都将不胜感激

谢谢


值=['text1'、'text2'、'text3']
事件_json={'text1':[{
'othertext':{},
“文本2”:[{
'text3':{…},
'othertext1':{},
....}], 
...}]}
def函数():
如果事件发生:
对于event_json['text1']中的事件:
对于事件['text2']中的活动:
如果“活动”中的“文本3”和
活动['text3']==预期名称:
打印('匹配文本')

如果签入
dict
列表
,则根据当前值,您可以迭代路径的

values = ['text1', 'text2', 'text3']
event_json = {'text1': [{'text2': [{'text3': "LOOKFOR"}], }]}

def function(expected):
    value = event_json
    for key in values:
        if isinstance(value, dict):
            if key not in value:
                print(value, key)
                return -1
            value = value[key]

        elif isinstance(value, list):
            for obj in value:
                if key in obj:
                    value = obj[key]
                    break
            else:
                return -2
    return value == expected # if it's array change to : expected in value

if __name__ == '__main__':
    print(function("LOOKFOR"))  # true
    print(function("LOOK-FOR")) # false

要使用的键都在
值中。值中的项目类似于json path:text1.text2.text3,通过使用每个文本以特定键为目标,并在内部循环以下一级键为目标,您是否始终在值数组中拥有该路径?例如,在event_json文件中,我试图找到任何等于“text1”的键,如果我找到它,我会得到这个键的值并搜索这个值,看看是否能找到任何等于“text2”的键,然后继续做类似的事情,直到我找到“值”中的最后一个文本并进行匹配。但是第一级是dict,然后是数组,你确定吗?谢谢,让我试试。