def paths(some_dict, path=()):
for key, value in some_dict.items():
key_path = path + (key,)
yield key_path
if hasattr(value, 'items'):
yield from paths(value, key_path)
d = {'a': {'b': {'c': {},'d': {'e': {}}}}}
print(*paths(d), sep='\n')
ZGVmIHBhdGhzKHNvbWVfZGljdCwgcGF0aD0oKSk6CiAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzb21lX2RpY3QuaXRlbXMoKToKICAgICAgICBrZXlfcGF0aCA9IHBhdGggKyAoa2V5LCkKICAgICAgICB5aWVsZCBrZXlfcGF0aAogICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICdpdGVtcycpOgogICAgICAgICAgICB5aWVsZCBmcm9tIHBhdGhzKHZhbHVlLCBrZXlfcGF0aCkKCmQgPSB7J2EnOiB7J2InOiB7J2MnOiB7fSwnZCc6IHsnZSc6IHt9fX19fQpwcmludCgqcGF0aHMoZCksIHNlcD0nXG4nKQo=
('a',)
('a', 'b')
('a', 'b', 'd')
('a', 'b', 'd', 'e')
('a', 'b', 'c')