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

Python读取JSON提取tmdb_id并循环处理时遇类型错误求助

解决JSON字符串数字键的循环处理问题

问题场景

你有一个顶层为字典、键是字符串类型数字的JSON文件,需要循环提取每个条目的tmdb_id发起API GET请求,再把响应参数写回原JSON,但使用for i in data['0']:时触发TypeError: list indices must be integers or slices, not str错误。

错误原因

data['0']返回的是单个电影条目字典,遍历它会拿到字典的键(如id、title),而非你预期的索引值,后续用这些字符串键当作列表索引时就会报错。

正确处理方案

方法一:直接遍历所有电影条目(推荐)

通过data.values()直接获取所有电影对象,无需关心顶层的字符串数字键:

import json
import requests

# 读取JSON文件
with open('your_movies.json', 'r', encoding='utf-8') as f:
    movie_data = json.load(f)

# 循环处理每一条电影数据
for movie in movie_data.values():
    # 提取tmdb_id
    tmdb_id = movie['tmdb_id']
    # 构造API请求URL(替换为你的实际API地址和密钥)
    api_url = f'https://api.themoviedb.org/3/movie/{tmdb_id}?api_key=YOUR_API_KEY'
    
    # 发送GET请求并处理响应
    response = requests.get(api_url)
    if response.status_code == 200:
        api_response = response.json()
        # 将API返回的字段添加回当前电影条目(示例添加overview字段)
        movie['overview'] = api_response.get('overview', '暂无简介')
    else:
        print(f"请求失败:tmdb_id={tmdb_id},状态码={response.status_code}")

# 将更新后的数据写回JSON文件
with open('updated_movies.json', 'w', encoding='utf-8') as f:
    json.dump(movie_data, f, indent=4, ensure_ascii=False)

方法二:遍历字符串数字键并取值

如果需要保留原顶层键的关联关系,可以遍历所有键再获取对应电影对象:

import json
import requests

with open('your_movies.json', 'r', encoding='utf-8') as f:
    movie_data = json.load(f)

for key in movie_data.keys():
    movie = movie_data[key]
    tmdb_id = movie['tmdb_id']
    # 后续API请求和数据更新逻辑同方法一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:40:35