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.

def dictionaries_walker(dictionary, path=()):
    """
    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.
    """

    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