def lookup(source, keys, fallback=None):
    """Traverses the source, looking up each key.  Returns None if can't find anything instead of raising an exception."""
    try:
        for key in keys:
            source = source[key]
        return source
    except (KeyError, AttributeError, TypeError):
        return fallback
