code: def dictionaries_walker(dictionary, path=()):
      
  
      for key in dictionary:
          if not isinstance(dictionary[key], dict):
              yield path, key, dictionary[key]
          else:
              for value in dictionaries_walker(dictionary[key], path + (key,)):
                  yield value
docs: Defines a generator used to walk into nested dictionaries.
  
      Usage::
  
          >>> nested_dictionary = {"Level 1A":{"Level 2A": { "Level 3A" : "Higher Level"}}, "Level 1B" : "Lower level"}
          >>> dictionaries_walker(nested_dictionary)
          <generator object dictionaries_walker at 0x10131a320>
          >>> for value in dictionaries_walker(nested_dictionary):
          ...	print value
          (('Level 1A', 'Level 2A'), 'Level 3A', 'Higher Level')
          ((), 'Level 1B', 'Lower level')
  
      :param dictionary: Dictionary to walk.
      :type dictionary: dict
      :param path: Walked paths.
      :type path: tuple
      :return: Path, key, value.
      :rtype: tuple
  
      :note: This generator won't / can't yield any dictionaries, if you want to be able to retrieve dictionaries anyway,
          you will have to either encapsulate them in another object, or mutate their base class.