def dottable_getitem(data, dottable_key, default=None):
def getitem(value, *keys):<EOL><INDENT>if not keys:<EOL><INDENT>return default<EOL><DEDENT>elif len(keys) == <NUM_LIT:1>:<EOL><INDENT>key = keys[<NUM_LIT:0>]<EOL>if isinstance(value, MutableMapping):<EOL><INDENT>return value.get(key, default)<EOL><DEDENT>elif isinstance(value, Sequence) andnot isinstance(value, six.string_types):<EOL><INDENT>return [getitem(v, key) for v in value]<EOL><DEDENT>return default<EOL><DEDENT>return getitem(getitem(value, keys[<NUM_LIT:0>]), *keys[<NUM_LIT:1>:])<EOL><DEDENT>return getitem(data, *dottable_key.split('<STR_LIT:.>'))<EOL>
Return item as ``dict.__getitem__` but using keys with dots.

    It does not address indexes in iterables.