Найти путь к элементу во вложенном словаре
Имеется вложенный словарь следующего вида:
{'a': {'s': {...}, 't': {...}},
'b': {'q': {...}, 'y': {...}, 'k': {...}}, ['1', '2', '3'...],
'c': {'i': {{'p': [...], 'l': ['qw', 'rt']}}, 'm': {...}}}
Необходимо найти путь к определенному элементу.
Например, если требуется найти s = 'rt'
,
то должно получиться ['c', 'i', 'l']
.
Пыталась сделать такую реализацию, но пока ничего не работает:
def find_elements(my_dict, st):
for k, v in my_dict.items():
if isinstance(v, dict):
for k2, v2 in v.items():
if isinstance(v2, list) and st in v2:
yield k
yield k2
else:
find_elements(v2, st)
elif isinstance(v, list):
for l in v:
if l == st:
yield k
elif isinstance(v, str):
if v == st:
yield k
s = 'какая-то строка'
qw = []
for i in find_elements(my_dict, s):
qw.append(i)
Источник: Stack Overflow на русском