def p_get(item, key, default=None):
    """ 根据key读取item中的数据，支持字典、数组、对象等

    :param item: 原始数据
    :param key: 用于提取的key
    :param default: 提取失败的默认值
    """
    if isinstance(item, dict):
        return item.get(key, default)
    if isinstance(item, (list, tuple)) and isinstance(key, int):
        if len(item) <= key:
            raise IndexError('index out of range')
        return item[key]
    if hasattr(item, key):
        return getattr(item, key)
    return default
