You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌套字典匹配服务器与用户后返回对应数据的函数问题

问题分析与修复方案

原函数的核心问题

  • 参数类型标注错误:用户/服务器编号是整数类型,但函数里标注为bool,虽不一定直接导致匹配失败,但不符合数据逻辑。
  • 返回语句失效:找到匹配用户后写的return #FS是无效代码,相当于直接返回None,根本没返回目标用户字典。
  • 冗余代码拖累效率:g、ch、b1、b2这些列表推导完全没必要——外层循环已经找到匹配的服务器,直接用value_key里的字段即可,无需再遍历整个字典。
  • 无明确异常分支:遍历完用户列表没找到匹配项时,函数会默认返回None,没有任何调试提示。

修复后的函数

def StatsBlyatX(self, User: int, Server: int):
    gop = self.ReadLevel()
    # 遍历所有服务器数据
    for server_data in gop.values():
        if server_data['server'] == Server:
            # 在目标服务器的用户列表中查找匹配项
            for user_entry in server_data['regd']:
                if user_entry['user'] == User:
                    print("stats got")
                    # 直接返回匹配到的用户字典
                    return user_entry
            # 服务器存在但用户未找到
            print("该用户未在目标服务器注册")
            return None
    # 目标服务器不存在
    print("未找到目标服务器")
    return None

关键优化点

  • 修正参数类型为int,与输入数据的实际类型匹配。
  • 直接返回找到的user_entry(即需求中的用户字典),完全贴合功能目标。
  • 移除冗余的列表推导,简化逻辑并提升代码效率。
  • 增加服务器不存在、用户未找到的明确提示,方便调试定位问题。
  • 用gop.values()直接遍历服务器数据,无需处理字典键,代码更简洁。

测试验证

用你提供的字典数据测试:

  • 传入User=624748908479905812和Server=681262466650734596,函数会返回:
    {"user": 624748908479905812, "exp": 10, "rank": 1, "points": 1, "msgs": 1, "tokens": 10000}
    
  • 若传入不存在的用户或服务器,会返回None并打印对应提示。

内容的提问来源于stack exchange,提问作者Roy Eastman-Kodak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:19:59