>>> 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')
>>>