from typing import Any, Tuple


def 二维元组转置(元组数据: Tuple[Tuple[Any, ...], ...]):
    """将二维元组执行转置。

    Args:
        元组数据: 由多个等长子元组组成的二维元组。

    Returns:
        成功时返回转置后的二维元组；失败时返回空元组 ``()``。
    """
    try:
        if not isinstance(元组数据, tuple) or not 元组数据:
            return ()

        行长度 = None
        for 项 in 元组数据:
            if not isinstance(项, tuple):
                return ()
            if 行长度 is None:
                行长度 = len(项)
            elif len(项) != 行长度:
                return ()

        return tuple(zip(*元组数据))
    except Exception:
        return ()


if __name__ == "__main__":
    print("===== 示例1：基础二维元组转置 =====")
    数据 = ((1, 2, 3), (4, 5, 6))
    print("结果:", 二维元组转置(数据))

    print("\n===== 示例2：三行两列转置 =====")
    数据 = (("张三", 18), ("李四", 20), ("王五", 22))
    print("结果:", 二维元组转置(数据))

    print("\n===== 示例3：空二维元组 =====")
    数据 = ()
    print("结果:", 二维元组转置(数据))

    print("\n===== 示例4：每行长度不一致 =====")
    数据 = ((1, 2), (3, 4, 5))
    print("结果:", 二维元组转置(数据))

    print("\n===== 示例5：存在非法子项 =====")
    数据 = ((1, 2), [3, 4])
    print("结果:", 二维元组转置(数据))

    print("\n===== 示例6：应用场景-把行式报表转成列式查看 =====")
    报表 = (
        ("日期", "2026-03-18", "2026-03-19"),
        ("销售额", 1200, 1350),
        ("订单数", 32, 35),
    )
    print("结果:", 二维元组转置(报表))
