from typing import Any, Tuple


def 二维元组取指定列(元组数据: Tuple[Tuple[Any, ...], ...], 列索引: int):
    """提取二维元组中的指定列。

    Args:
        元组数据: 由多个子元组组成的二维元组。
        列索引: 需要提取的列索引，支持负索引。

    Returns:
        成功时返回提取后的新元组；失败时返回空元组 ``()``。
    """
    try:
        if not isinstance(元组数据, tuple) or not isinstance(列索引, int):
            return ()

        结果 = []
        for 项 in 元组数据:
            if not isinstance(项, tuple):
                return ()
            结果.append(项[列索引])
        return tuple(结果)
    except Exception:
        return ()


if __name__ == "__main__":
    print("===== 示例1：提取第0列 =====")
    数据 = (("张三", 18, "技术部"), ("李四", 20, "销售部"))
    print("结果:", 二维元组取指定列(数据, 0))

    print("\n===== 示例2：提取第2列 =====")
    数据 = (("张三", 18, "技术部"), ("李四", 20, "销售部"))
    print("结果:", 二维元组取指定列(数据, 2))

    print("\n===== 示例3：使用负索引提取最后一列 =====")
    数据 = (("张三", 18, "技术部"), ("李四", 20, "销售部"))
    print("结果:", 二维元组取指定列(数据, -1))

    print("\n===== 示例4：列索引越界 =====")
    数据 = (("张三", 18), ("李四", 20))
    print("结果:", 二维元组取指定列(数据, 5))

    print("\n===== 示例5：存在非法子项 =====")
    数据 = (("张三", 18), "错误项")
    print("结果:", 二维元组取指定列(数据, 1))

    print("\n===== 示例6：应用场景-提取订单金额列 =====")
    订单数据 = (
        ("ORD-001", "张三", 199.0, "已付款"),
        ("ORD-002", "李四", 88.5, "待付款"),
        ("ORD-003", "王五", 320.0, "已发货"),
    )
    print("结果:", 二维元组取指定列(订单数据, 2))
