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

Python中已知Champion key,如何获取对应Champion名称(未知JSON上层键)

解决通过Champion Key获取对应名称的问题

首先咱们先拆解下你的问题:你手里的JSON结构里,data的上层键是英雄的id(比如"Aatrox"),但你现在只知道英雄的key值(比如266),没法直接通过键名索引,得遍历data里的所有英雄条目来匹配目标key。

另外要注意一个容易踩坑的细节:JSON里的key是字符串类型(比如"266"),而你代码里的key是整数266,直接比较会匹配失败,得先统一类型。

修改后的完整代码

import json

key = 266
# 把整数key转成字符串,和JSON里的类型匹配
target_key = str(key)

with open('C:/Users/robin/Documents/Riot project/champion.json', 'r', encoding='utf-8') as f:
    champion_info = json.load(f)

# 遍历data里的所有英雄条目,找匹配的key
champion_name = None
for champ_id, champ_data in champion_info['data'].items():
    if champ_data['key'] == target_key:
        champion_name = champ_data['name']
        break  # 找到后直接退出循环,不用再遍历剩下的英雄

# 输出结果
if champion_name:
    print(f"找到对应英雄:{champion_name}")
else:
    print(f"未找到key为{key}的英雄")

代码说明

  • 类型统一:把整数key转为字符串target_key,确保和JSON中存储的key类型一致,避免类型不匹配导致的匹配失败。
  • 遍历匹配:用items()方法遍历data里的所有英雄,champ_id就是你之前不知道的上层键(比如"Aatrox"),champ_data是该英雄的完整数据对象。
  • 提前终止:找到目标英雄后立刻break循环,减少不必要的遍历,提升效率。

可选优化:构建映射字典(适合多次查询)

如果需要频繁根据key查询英雄名,建议提前构建一个key -> name的映射字典,这样后续查询都是O(1)的高效操作:

import json

with open('C:/Users/robin/Documents/Riot project/champion.json', 'r', encoding='utf-8') as f:
    champion_info = json.load(f)

# 一次性构建key到name的映射字典
key_to_name = {champ['key']: champ['name'] for champ in champion_info['data'].values()}

# 后续查询直接用字典取值
key = 266
target_key = str(key)
champion_name = key_to_name.get(target_key, "未找到对应英雄")
print(champion_name)

这种方式适合需要多次查询的场景,只需要在加载文件时构建一次字典,之后每次查询都非常快速。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:07:49