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