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

Python调用omdb模块生成列表时仅追加最后一个值的问题

搞定你的OMDB电影详情列表问题

嘿,我一眼就看出你为啥列表里只留最后一条数据了——十有八九是列表初始化的位置不对,或者循环里没正确用append()而是直接覆盖变量了!

先把你的代码补全并修复好:

from pprint import pprint
import omdb

def getdetails(d2):
    pprint.pprint(d2)
    # 重点!要在循环外面先把结果列表初始化好
    movie_details = []
    for title_movies in d2.keys():
        try:
            # 获取单部电影的详情数据
            movie_data = omdb.get(title=title_movies, timeout=5)
            # 先检查下有没有拿到有效数据,再添加到列表里
            if movie_data and 'error' not in movie_data:
                movie_details.append(movie_data)
            else:
                print(f"糟了,拿不到《{title_movies}》的详情哦")
        except Exception as e:
            print(f"请求《{title_movies}》的时候出问题了:{str(e)}")
    return movie_details

为啥之前会出错?

你之前的代码估计踩了这两个坑之一:

  • 把列表初始化(movie_details = [])放在了循环里面:那每次循环都会把列表清空重开,最后自然只剩最后一次的结果。
  • 直接用movie_details = movie_data代替append():这不是往列表里加元素,是直接把变量换成了单条电影数据,之前的内容全丢了。

给你加俩小优化

  • 加了异常捕获:网络抽风、API限频或者电影名不对的时候,代码不会直接崩,还能告诉你哪出问题了。
  • 校验返回结果:OMDB找不到电影的时候会返回带error的字典,提前过滤掉这些无效数据,后面用的时候就不会踩坑啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:38:17