from typing import Any, Tuple


def 统计_占比(元组数据: Tuple[Any, ...]):
    """统计各成员在元组中的占比。

    功能说明:
        - 这个函数用于统计各成员在元组中的占比。
        - 常用于查看元组中各类成员的分布情况、频率情况或占比情况。
        - 返回结果通常是统计后的结构化数据，方便继续分析、展示或二次处理。

    Returns:
        成功时返回 ``((成员, 占比), ...)``；失败时返回空元组 ``()``。
    """
    try:
        if not isinstance(元组数据, tuple) or not 元组数据:
            return ()

        频率列表 = []
        for 元素 in 元组数据:
            已找到 = False
            for 项 in 频率列表:
                if 项[0] == 元素:
                    项[1] += 1
                    已找到 = True
                    break
            if not 已找到:
                频率列表.append([元素, 1])

        总数 = len(元组数据)
        return tuple((元素, 次数 / 总数) for 元素, 次数 in 频率列表)
    except Exception:
        return ()


if __name__ == "__main__":
    print("===== 示例1：基础占比统计 =====")
    数据 = ("a", "b", "a", "c")
    print("结果:", 统计_占比(数据))

    print("\n===== 示例2：单成员元组 =====")
    数据 = ("唯一",)
    print("结果:", 统计_占比(数据))

    print("\n===== 示例3：全部唯一 =====")
    数据 = (1, 2, 3, 4)
    print("结果:", 统计_占比(数据))

    print("\n===== 示例4：空元组 =====")
    数据 = ()
    print("结果:", 统计_占比(数据))

    print("\n===== 示例5：包含不可哈希成员 =====")
    数据 = ([1], [1], {"x": 1})
    print("结果:", 统计_占比(数据))

    print("\n===== 示例6：应用场景-统计支付状态占比 =====")
    支付状态 = ("已支付", "待支付", "已支付", "退款中", "已支付")
    print("结果:", 统计_占比(支付状态))



