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

调用Chess.com API遇TypeError:string indices must be integers求助

解决TypeError: string indices must be integers问题

你的问题出在get_leaderboards().json这一行——当前版本的chessdotcom库中,json是需要调用的方法,而非直接访问的属性。教程代码能运行是因为当时使用的旧版本库中json是属性,库更新后API逻辑发生了变化。

修改代码中的关键行:

data = get_leaderboards().json()  # 为json加上括号,调用方法

完整修改后的代码:

from chessdotcom import get_leaderboards
import pprint

printer = pprint.PrettyPrinter()


def print_leaderboards():
    data = get_leaderboards().json()  # 此处修改为调用json()方法
    categories = data.keys()

    for category in categories:
        print('Category:', category)
        for idx, entry in enumerate(data[category]):
            print(f'Rank: {idx + 1} | Username: {entry["username"]} | Rating: {entry["score"]}')


print_leaderboards()

原因说明

直接访问.json属性时,得到的不是解析后的字典,而是一个字符串(或非字典类型)。遍历data[category]时,entry会变成字符串里的单个字符,此时用entry["username"]自然触发错误——因为字符串只能用整数作为索引,不能用字符串键。调用.json()方法后,API响应才会被解析为Python字典,后续的键访问逻辑就能正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:20:24