Я бы не назвал это лучшим решением, но вот рабочее:
Предположим, ваш json выглядит следующим образом:
print(d)
{
"Data": {
"Site": {
"(RandomId)": {
"Title": "Thing"
},
"(Text I want)": {
"Title": "(The string i'm searching for)"
}
}
}
}
Затем с двумя рекурсивными функциями:
def find_children(dic, value):
child, grandchild = '', ''
for k, v in dic.items():
if isinstance(v, dict):
child, grandchild = find_children(v, value)
if child:
break
else:
if value in v:
return k, v
return child, grandchild
def find_parent(dic, children):
parents = ''
for k, v in dic.items():
if isinstance(v, dict):
if children[0] in v.keys() and children[1] in v.values():
return k
else:
parents = find_parent(v, children)
return parents
Вы можете найти:
find_parent(d, find_children(d, "i'm searching"))
# '(Text I want)'
find_parent(d, find_children(d, "Thing"))
# '(RandomId)'