Найти - Пользователи
Полная версия: поиск ключа в словаре переменной глубины.
Начало » Python для новичков » поиск ключа в словаре переменной глубины.
1
stanislav.sh7
Добрый день.
Есть словарь глубина вложенности элементов не известна может быть просто словарь в словаре, а может словарь в словаре и так 10 раз. Возникает вопрос как в таком случае грамотно организовать поиск ключа который может встречаться в разных ветках и на разных уровнях словаря.

FishHook
stanislav.sh7
Возникает вопрос как в таком случае грамотно организовать поиск ключа который может встречаться в разных ветках и на разных уровнях словаря.

Ну дык рекурсия как раз и решает подобные задачи.
py.user.next
  
>>> def f(dct, key):
...     if key in dct:
...         return (key, dct[key])
...     for k in dct:
...         if isinstance(dct[k], dict):
...             res = f(dct[k], key)
...             if res is not None:
...                 return res
...     return None
... 
>>> f({'a': 'a1', 'b': 'b1'}, 'a')
('a', 'a1')
>>> f({'a': 'a1', 'b': 'b1'}, 'b')
('b', 'b1')
>>> f({'a': {'c': 'c2', 'd': 'd2'}, 'b': 'b1'}, 'c')
('c', 'c2')
>>> f({'a': {'c': 'c2', 'd': 'd2'}, 'b': 'b1'}, 'd')
('d', 'd2')
>>> f({'a': {'c': {'e': 'e3', 'f': 'f3'}, 'd': 'd2'}, 'b': 'b1'}, 'e')
('e', 'e3')
>>> f({'a': {'c': 'c2', 'd': 'd2'}, 'b': 'b1', 'd': 'd1'}, 'd')
('d', 'd1')
>>> f({'a': 1}, 'a')
('a', 1)
>>> f({'a': 1}, 'x')
>>> 
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB