Форум сайта python.su
Добрый день.
Есть словарь глубина вложенности элементов не известна может быть просто словарь в словаре, а может словарь в словаре и так 10 раз. Возникает вопрос как в таком случае грамотно организовать поиск ключа который может встречаться в разных ветках и на разных уровнях словаря.
Офлайн
stanislav.sh7
Возникает вопрос как в таком случае грамотно организовать поиск ключа который может встречаться в разных ветках и на разных уровнях словаря.
Офлайн
>>> 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') >>>
Отредактировано py.user.next (Апрель 30, 2019 12:17:00)
Офлайн