这应该可以解决问题。
def find_value(needle, container):
    # Already found the object. Return.
    if needle == container:
        return True
    values = None
    if isinstance(container, dict):
        values = container.values()
    elif hasattr(container, '__iter__'):
        values = container.__iter__()
    if values is None:
        return False
    # Check deeper in the container, if needed.
    for val in values:
        if find_value(needle, val):
            return True
    # No match found.
    return False
用法:
In [3]: d = { 'test': ['a', 'b', 'c'], 'd1': { 'd2': 'Block', 'a': 'b'} }
In [4]: find_value('Block', d)
Out[4]: True
编辑:测试一个值是否包含needle:
def find_value(needle, container):
    # Already found the object. Return.
    if isinstance(container, basestring) and needle in container:
        return True
    values = None
    if isinstance(container, dict):
        values = container.values()
    elif hasattr(container, '__iter__'):
        values = container.__iter__()
    if values is None:
        return False
    # Check deeper in the container, if needed.
    for val in values:
        if find_value(needle, val):
            return True
    # No match found.
    return False