You need to enable JavaScript to run this app. 避免冗长elif判断链,实现ID匹配逻辑的高效化与动态化改造
优惠活动
大模型
产品
解决方案
定价
更多

避免冗长elif判断链,实现ID匹配逻辑的高效化与动态化改造

实现代码

你可以直接取两个列表的最小长度作为遍历上限,通过索引遍历完成匹配,完全符合你要求的for x in range(amount)形式,代码如下:

api = [1232312, 123123, 1231231]
IDList = [-100123123, 100123123, 100123123]
# 取两个列表最小长度作为遍历上限,避免索引越界,自动适配ID和api的数量
amount = min(len(IDList), len(api))

try:
    for x in range(amount):
        if chatid == IDList[x]:
            # 注意你原代码中索引为1的分支是给api属性赋值,其余给id属性赋值,如为笔误可删除判断直接统一赋值id
            if x == 1:
                my_event_handler.api = api[x]
            else:
                my_event_handler.id = api[x]
            print(f"hook{x+1}")
            # 匹配成功直接跳出循环,避免无效遍历
            break
except Exception as e:
    # 按需补充异常处理逻辑即可
    pass
优化说明
  • 自动适配数量:后续新增ID只需在IDList和api列表对应位置添加元素即可,不需要修改匹配逻辑,hook标识会自动递增
  • 代码精简:删除了冗余的多分支判断,维护成本更低
  • 兼容边界:取两个列表的最小长度作为遍历上限,避免出现索引越界问题

如果你不需要严格使用range遍历,更推荐用enumerate写法,可读性更高:

try:
    for idx, target_id in enumerate(IDList):
        if chatid == target_id:
            if idx == 1:
                my_event_handler.api = api[idx]
            else:
                my_event_handler.id = api[idx]
            print(f"hook{idx+1}")
            break
except IndexError:
    # 处理api列表长度不足的情况
    pass

内容的提问来源于stack exchange,提问作者Rynixx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 03:15:03